任何方法调用的本质: 其实是发送了一个消息, 用runtime发送消息, OC底层实现通过runtime实现
最终生成消息机制, 编译器做的事情, clang -rewrite-objc main.m 查看最终生成代码
使用runtime创建一个NSobject对象的步骤:
1. 必须要导入头文件
在xcode6之前, 苹果运行使用objc_msgSend是有参数提示的, xcode6之后苹果不推荐我们使用runtime, 可以通过xcode的buile setting, 搜索msg把runtime设置为NO就可以使用runtime了
2. 使用runtime调用私有方法
下面我定义了一个person类继承于NSObject, 在.m文件里面直接实现了-(void)eat{}方法, 如果按照我们平时的习惯, 直接调用 [p eat] 方法会报错的, 但是使用runtime方法调用则不会
网友评论