美文网首页
运行时,动态获取对象身上的方法,协议属性等

运行时,动态获取对象身上的方法,协议属性等

作者: 金歌漫舞 | 来源:发表于2016-07-30 17:52 被阅读9次

1.运行时:在运行的时候,动态获取队形身上的方法,协议,属性,成员变量,可以将对象身上的方法给干掉,弄我们自己的方法

  • OC 方法
-(NSArray *)class_copyIvarList{
    
    unsigned int count;
    //取类的成员变量class_copyIvarList  方法:class_copyMethodList,类的guan'l:class_copyPropertyList,类的协议class_copyProtocolList

  
  Ivar *ivarList =  class_copyIvarList(self.class, &count);
    
    NSMutableArray *mutable = [NSMutableArray array];
    for (int i = 0 ; i < count; i++) {
        //去ivarList的首地址
       Ivar name = ivarList[i];
        //属性名
      const char *proper =  ivar_getName(name);
//        类型
        const char *properType = ivar_getTypeEncoding(name);
        //属性名转换为utf8
        NSString *properName = [NSString stringWithUTF8String:proper];
        [mutable addObject:properName];
    }
    
    return mutable.copy;
    
}

  • Swift方法
 class func printIvarList(clazz:AnyClass) -> [AnyObject]{
    
    var count : UInt32 = 0
    let ivars =  class_copyIvarList(clazz, &count)
    var names = [String]()
    for i in 0..<count{
    
        let ivar = ivars[Int(i)]
        //名字
        let name = ivar_getName(ivar)
        let nameString = String(CString: name, encoding: NSUTF8StringEncoding)
        names.append(nameString!)
        //类型
        let type = ivar_getTypeEncoding(ivar)
        let typeString = String(CString: type, encoding: NSUTF8StringEncoding)
        print("name=\(nameString ?? ""),type =\(typeString ?? "")")
    }
    return names
    }

相关文章

  • 运行时,动态获取对象身上的方法,协议属性等

    1.运行时:在运行的时候,动态获取队形身上的方法,协议,属性,成员变量,可以将对象身上的方法给干掉,弄我们自己的方...

  • Runtime使用总结

    本文主要内容有:获取属性/方法/协议/成员变量列表、动态关联属性、动态添加方法、方法交换。 一、获取列表 使用Ru...

  • swift mirror & error

    swift Mirror Mirror Mirror 是指可以动态获取类型、成员信息,在运行时可以调用方法、属性等...

  • Mirror

    Mirror 反射:是指可以动态获取属性、成员信息,在运行时可以调用方法、属性等行为的特性 Swift并不像OC那...

  • swift-Mirror反射

    打印结果: Mirror 可以动态获取类型、成员变量,在运行时可以调用方法、属性等行为的特性. Mirror.sw...

  • Runtime

    用法 关联对象 动态获取类的属性 交叉方法

  • java_反射

    1 ,什么是java反射:是一种运行时机制,在运行过程中,能获取类的属性和方法,对于对象能调用任意的方法,动态获取...

  • 进击的Android工程师之Java基础: 反射

    反射机制呢就是在程序运行时,动态的获取类(class),类的方法(method)属性(field)等。主要的注意点...

  • java 反射初识

    反射是Java中的一个重要的特性,使用反射可以在运行时动态生成对象、获取对象属性以及调用对象方法。与编译期的静态行...

  • 反射

    反射的作用① 动态的加载类、动态的获取类的信息(属性,方法,构造方法) ② 动态构造对象 ③ 动态调用类和对象的任...

网友评论

      本文标题:运行时,动态获取对象身上的方法,协议属性等

      本文链接:https://www.haomeiwen.com/subject/zrdtsttx.html