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:判断是否遵循协议; - 其他:类名;版本号;类信息;(忽略)
网友评论