iOS-20-runtime解析

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:判断是否遵循协议;
  • 其他:类名;版本号;类信息;(忽略)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,824评论 0 9
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 2,235评论 0 7
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,650评论 33 466
  • 本文转载自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex阅读 801评论 0 1
  • 文起之始首正一缪,此之言香乃原始体味,绝非香水之气。 自古有云:闻香识女人。更有“幽兰”之词以赞之。品美,只重其容...
    绝对疯了阅读 250评论 0 0