Runtime的底层实现

任何方法调用的本质: 其实是发送了一个消息, 用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方法调用则不会


你可能感兴趣的:(Runtime的底层实现)