程序员iOS进阶指南iOS 开发

《Effective Objective-C 2.0》读书笔记(

2016-06-10  本文已影响175人  栗子烤肉

11.理解objc_msgSend作用

静态绑定(static binding):在编译期就能决定运行时所应调用的函数
动态绑定(dynamic binding):所调用的函数在运行期才能确定
void objc_msgSend(id self,SEL cmd,..)
流程
其他函数

12.理解消息转发机制

消息转发流程图

13.用“方法调配技术”调试“黑盒方法”

结果

14.理解“类对象”的用意

如果声明时指定具体类型,在该类实例中调用该类没有的方法时,编译器会警告,而id不会

<pre><code>

pragma mark - Grandpa

@interface Grandpa : NSObject

@end

@implementation Grandpa

@end

pragma mark - Father

@interface Father : Grandpa

@end

@implementation Father

@end

pragma mark - Son

@interface Son : Father

@end

@implementation Son

@end
</pre></code>

<pre><code>
-(void)example14{

Father *father = [[Father alloc] init];

pr_int([father isMemberOfClass:[Grandpa class]]);
pr_int([father isMemberOfClass:[Father class]]);
pr_int([father isMemberOfClass:[Son class]]);


pr_int([father isKindOfClass:[Grandpa class]]);
pr_int([father isKindOfClass:[Father class]]);
pr_int([father isKindOfClass:[Son class]]);

}
</pre></code>

结果
上一篇下一篇

猜你喜欢

热点阅读