在Objective中,id<protocol> or NSObject<protocol>经常用于委托声明。
id和NSObject的主要区别是什么?你什么时候想用一种对另一种?
发布于 2013-12-13 13:19:41
id<protocol> obj是对符合指定协议的任何对象的声明。您可以将任何消息从给定的协议发送到对象(或从<protocol>继承的协议)。
NSObject<protocol> *obj是对以下任何对象的声明
NSObject派生的。这意味着在第二种情况下,可以将任何方法从NSObject类发送到对象,例如
id y = [obj copy];在第一种情况下会出现编译器错误。
第二个声明还意味着obj符合NSObject协议。但是,如果<protocol>是从NSObject协议派生出来的,那么这并没有什么区别:
@protocol protocol <NSObject>https://stackoverflow.com/questions/20567328
复制相似问题