首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >id<protocol>与NSObject<protocol>的区别

id<protocol>与NSObject<protocol>的区别
EN

Stack Overflow用户
提问于 2013-12-13 13:08:13
回答 1查看 2K关注 0票数 9

在Objective中,id<protocol> or NSObject<protocol>经常用于委托声明。

id和NSObject的主要区别是什么?你什么时候想用一种对另一种?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 13:19:41

id<protocol> obj是对符合指定协议的任何对象的声明。您可以将任何消息从给定的协议发送到对象(或从<protocol>继承的协议)。

NSObject<protocol> *obj是对以下任何对象的声明

  • 符合给定的协议,以及
  • 是从NSObject派生的。

这意味着在第二种情况下,可以将任何方法从NSObject类发送到对象,例如

代码语言:javascript
复制
id y = [obj copy];

在第一种情况下会出现编译器错误。

第二个声明还意味着obj符合NSObject协议。但是,如果<protocol>是从NSObject协议派生出来的,那么这并没有什么区别:

代码语言:javascript
复制
@protocol protocol <NSObject>
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20567328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档