美文网首页
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反射机制

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