摘要: 编译器将 [receiver message] 编译成:objc_msgSend(receiver, selector); 若有参数的话则是:objc_msgSend(receiver, selector, arg1, arg2, …)。 在动态绑定时,消息函数作的事情: 1. 根据receiver类,找到selector所指的procedure 2.调用找到的procedure, 并将收到... 阅读全文
posted @ 2012-06-04 16:34 agefisher 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 可以通过实现resolveInstanceMethod: 和 resolveClassMethod: 分别来提供对象和类的一个动态函数实现。 定义一个dynamic的属性: @dynamic propertyName; 一个Objective-C 的dynamic 函数是一个c 格式的函数,至少带有两个参数:self 和_cmd. 你可以使用 class_addMethod 函... 阅读全文
posted @ 2012-06-04 16:34 agefisher 阅读(194) 评论(0) 推荐(0) 编辑
摘要: void forwardInvocation:(NSInvocation *) anInvocation… 若调用一个对象没有实现的方法时,在报告一个错误之前,运行时会先调用一个forwardInvocation:方法,该方法会带有一个封装了原始调用的message以及对应的参数。 要forward一个message,所有forwardInvacation的实现必须要: 1. 决定这个mes... 阅读全文
posted @ 2012-06-04 16:34 agefisher 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Objective-C 通过三种不同的层次和运行时系统交互: 1. 通过Objective-C 源代码编译后 2. 通过NSObject 的函数,如: isKindOfClass,确定一个对象的类; isMemberOfClass,确定一个对象在继承层次的位置; respondsToSelector,指出一个对象是否能接受一个特定的message; conformsT... 阅读全文
posted @ 2012-06-04 16:33 agefisher 阅读(135) 评论(0) 推荐(0) 编辑