在Objective-C中,id<protocol> or NSObject<protocol>
经常用于委托声明。
id和NSObject之间的主要区别是什么? 你想什么时候使用其中一个?
答案 0 :(得分:9)
id<protocol> obj
是符合指定协议的任何对象的声明。
您可以将给定协议的任何消息发送到对象(或协议
<protocol>
继承自。)
NSObject<protocol> *obj
是
NSObject
。这意味着在第二种情况下,您可以从NSObject
类发送任何方法
对象,例如
id y = [obj copy];
在第一种情况下会产生编译错误。
第二个声明还暗示obj
符合NSObject
协议。
但是,如果<protocol>
来自NSObject协议,则没有区别:
@protocol protocol <NSObject>