iOS-20-runtime解析

作者: 小东门儿 | 来源:发表于2017-02-23 13:56 被阅读40次

    http://ios.jobbole.com/84919/
    http://www.jianshu.com/p/f900de4a1495
    实例对象instance->类class->方法method(->SEL->IMP)->实现函数
    实例对象只存放isa指针和实例变量,由isa指针找到所属类,类维护一个运行时可接收的方法列表;方法列表中的每个入口是一个方法(Method),其中key是一个特定名称,即选择器(SEL),其对应一个指向底层C实现函数的指针,即实现(IMP),。运行时机制最关键核心是objc_msgSend函数,通过给target(类)发送selecter(SEL)来传递消息,找到匹配的IMP,指向实现的C函数。

    • 类相关:
      + 数据类型:class,object;
      - isa 元类
      - superClass 根类
      + 操作函数:
      - class_:
      + get: 类名,父类; 实例变量,成员变量;属性;实例方法,类方法,方法实现;
      + copy: 成员变量列表;属性列表;方法列表;协议列表;
      + add: 成员变量;属性;方法;协议;
      + replace:属性;方法;
      + respond:响应方法判断(内省)
      + isMetaclass:元类判断(内省)
      + conform:遵循协议判断(内省)
      - objc_:
      + get: 实例变量;成员变量;类名;类;元类;关联对象;
      + copy: 对象;类;类列表;协议列表;
      + set: 实例变量;成员变量;类;类列表;协议;关联对象;
      + dispose: 对象;
      - 动态创建/销毁类、对象
    • 成员变量、属性相关:
      + 数据类型:Ivar;objc_property_t;objc_property_attribute_t;
      + 操作函数:
      - ivar_:
      - property_:
    • 方法消息相关:
      + 数据类型:SEL;IMP; Method;方法缓存
      + 操作函数:
      - method_:
      + invoke: 方法实现的返回值;
      + get: 方法名;方法实现;参数与返回值相关;
      + set:方法实现;
      + exchange:交换方法实现
      + 方法调用:msgSend函数(找到方法实现)
      + 消息转发:
      - Method Resolution
      - Fast Forwarding
      - Normal Forwarding
    • 协议相关:
      + 数据类型:Protocol;
      + 操作函数:
      - protocol_:
      + get: 协议;属性;
      + copy:协议列表;属性列表;
      + add:属性;方法;协议;
      + isEqual:判断两协议等同;
      + comform:判断是否遵循协议;
    • 其他:类名;版本号;类信息;(忽略)

    相关文章

      网友评论

        本文标题:iOS-20-runtime解析

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