Object-C runtime programming guide学习笔记

Messaging
 
向一个实例发消息,runtime使用的是objc_msgSend函数来发送的。
 
每一个class都有一个指针指向他的super class,有一个 dispatch table,指向每个方法的地址。
每一个实例(来自NSObject or NSProxy)都有一个指针isa,指向他的class. 
 
runtime通过向上回溯直到找到调用的方法,然后执行。
 
执行的方法中会传入两个隐藏参数
self:  message receiver
_cmd: 当前方法的selector

 

动态添加一个方法
resolveInstanceMethod可以动态添加实例方法,resolveClassMethod可以动态添加类方法
 
动态加载
NSBundle
 
消息转发
 
如果实现了forwardInvocation, 则当想对象发送一个不存在的消息时候,会调用此接口,可以在这里将消息转发到其他对象来处理。
posted @ 2015-09-11 17:28  怎么也得过啊  阅读(168)  评论(0编辑  收藏  举报