在Objective-C中,id<protocol> or NSObject<protocol>
经常用于委托声明。id <protocol>与NSObject之间的区别<protocol>
id和NSObject之间的主要区别是什么? 你想什么时候使用其中一种?
在Objective-C中,id<protocol> or NSObject<protocol>
经常用于委托声明。id <protocol>与NSObject之间的区别<protocol>
id和NSObject之间的主要区别是什么? 你想什么时候使用其中一种?
id<protocol> obj
是任何符合指定协议的对象的声明。 您可以将给定协议的任何消息发送给对象(或从<protocol>
继承的协议 )。
NSObject<protocol> *obj
是该
NSObject
的。这意味着,在第二种情况下,可以发送从所述 类NSObject
任何方法的对象,例如
id y = [obj copy];
这将使一个编译错误在第一种情况。
第二个声明还意味着obj
符合NSObject
协议。 但这没有什么区别如果<protocol>
从NSObject的协议导出:
@protocol protocol <NSObject>
有用http://stackoverflow.com/questions/466777/whats-the-difference-between-declaring-a-variable-id-和“nobject” – Maulik
这不是重复的,因为“id”与“NSObject *”“和”id vs NSObject *“”是明显不同的问题。投票重新开放。 –
马丁是对的,这是不一样的。 – Boon