OC中的反射

OC中的反射

  • OC的反射是基于其Runtime实现的,一般表现在字符串和Class转换,字符串和内部方法转换,字符串和属性的转换(取值和赋值)
    • 字符串和Class转换

      • 通过类名的字符串形式实例化对象
          // 返回一个类对象
       Class class = NSClassFromString(@"Person"); //类名的字符串
       Person *p1 = [[class alloc] init];
      
      • 将类名转换为字符串
          Class class = [Person class];
          NSString *classString = NSStringFromClass(class);
      
    • 字符串和内部方法转换(SEL)

      • 通过方法的字符串形式实例化方法
          SEL sel = NSSelectorFromString(@"eat");
          if ([p1 respondsToSelector:sel]) {
          
              [p1 performSelector:sel];
          }
      
      • 将方法变为字符串
          NSString *methodString = NSStringFromSelector(@selector(eat));
      
    • 字符串和属性的转换

      • OC中属性的反射通过KVC(Key-Value Coding)机制实现,KVC是一种间接访问对象属性的机制,不直接调用getter 和 setter方法,而使用valueForKey 来替代getter 方法,setValue:forKey来代替setter方法。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容