美文网首页
iOS反射机制

iOS反射机制

作者: 7_c5dc | 来源:发表于2018-12-15 14:12 被阅读0次

概念

所谓反射是程序能够访问、检测和修改自身状态或行为的一种能力。
对oc来说,动态的运行状态下我们可以构造任意一个类,
然后我们通过这个类知道这个类的所有属性和方法,并且如果我们创建一个对象,
我们也可以通过对象找到这个类的任意一个方法,这就是反射机制
OC的反射机制是基于Runtime的,如果要实现复杂的反射机制需要runtime想着的东西

获取Class对象

// 在实例方法中通过self调用class实例方法获取类对象
[self class]
// 通过ViewController类直接调用class类方法获取类对象
[ViewController class]
// 在类方法中使用类对象调用class方法获取类对象
+ (Class)classMethod {
    return [self class];
}

常用判断方法

- (BOOL)isKindOfClass:(Class)aClass;// 当前对象是否这个类或其子类的实例 
- (BOOL)isMemberOfClass:(Class)aClass;// 当前对象是否是这个类的实例 
- (BOOL)conformsToProtocol:(Protocol *)aProtocol; // 当前对象是否遵守这个协议 
- (BOOL)respondsToSelector:(SEL)aSelector;// 当前对象是否实现这个方法 

反射方法

// SEL和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
// Class和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
FOUNDATION_EXPORT Class __nullable NSClassFromString(NSString *aClassName);
// Protocol和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) NS_AVAILABLE(10_5, 2_0);
FOUNDATION_EXPORT Protocol * __nullable NSProtocolFromString(NSString *namestr) NS_AVAILABLE(10_5, 2_0);

相关文章

  • iOS反射机制

    了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法...

  • iOS反射机制

    了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法...

  • iOS 反射机制

    // SEL和字符串转换 FOUNDATION_EXPORT NSString*NSStringFromSelec...

  • iOS反射机制

    该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> http://www.jianshu.co...

  • iOS反射机制

    常用反射方法 通过这些方法,我们可以在运行时选择创建那个实例,并动态选择调用哪个方法。这些操作甚至可以由服务器传回...

  • iOS反射机制

    概念 获取Class对象 常用判断方法 反射方法

  • iOS 反射机制

    一、简介 动态编程机制可以让Object-C语言更加灵活,Object-C提供了3种编程方式与运行环境交互。 1....

  • iOS反射机制

    该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> http://www.jianshu.co...

  • objc_property_t

    objc_property_t:iOS反射机制 iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出...

  • iOS之反射机制

    Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法和协议,我们可...

网友评论

      本文标题:iOS反射机制

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