ios程序员

id 、NSObject * 和 id<NSObject&

2014-01-14  本文已影响913人  王小明if

今天 allen 问了我一个问题,idNSObject之间有什么区别,经过大神henry指点给我这个网址 id vs NSObject* vs id<NSObject>,大致明白其中的原理。


id foo1;
NSObject *foo2;
id<NSObject> *foo3;

因此我们应该在这三种方法中做出怎么样的选择呢,如果你是需要一个不需要任何类型检查的对象指针时,就使用 id 吧,它经常用于接收一些不确定返回值类型的函数返回值,也经常用于 delegate 上,因为在runtime时,delegate 所属的类并不重要,而是会通过 responseToSelector: 做对其相应的方法做检查。(当然也可能是通过协议指定)。

而当你需要一个严格类型检查的对象指针时,相信我,使用 id<NSObject> 吧~因为在现有框架中,我们会大量使用 NSProxy ,这个不属于 NSObject 子类的东东,并且,我们只需要确认一个对象能用响应一系列 NSObject 的方法,我们根本不关系它所属的类。

上一篇下一篇

猜你喜欢

热点阅读