1、获取成员变量
Ivar表示成员类型。使用runtime需要导入<objc/runtime.h>,使用msgSend需要导入<objc/message.h>

2、获取属性列表
objc_property_t 为属性

3、获取方法列表
Method为方法类型

4、方法替换
方法替换。第一个参数为class,第二个方法名。

5、消息机制
OC调用方法本质就是发送一个消息给它。如下图

两行代码本质是一样的,都是调用two方法。要注意的是,如果想使用msgSend,必须在BuildSettings里边,把严格检查objc_send关了。

网友评论