eXit_door 2013-07-15 02:54 采纳率: 0%
浏览 907

作为指针的delegate实体变量

通常我会将代理实体变量作为指针声明:

__weak NSObject <ViewControllerDelegate> *delegate;

在苹果的样例中是这样:

__weak id <ViewControllerDelegate> delegate;

不知道使用id和NSObject的区别是什么?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-05 20:04
    关注

    使用 id 类型可以让代理实体变量指向任意类型的对象,而使用 NSObject 类型的变量只能指向继承自 NSObject 的类型的对象。


    使用 id 类型的变量可以更灵活,但是也意味着在编译时无法对代理实体变量进行类型检查。也就是说,如果在使用代理实体变量时发生了类型转换错误,只有在运行时才能发现。而使用 NSObject 类型的变量则会在编译时进行类型检查,这样可以更早发现类型转换错误,提高代码的可靠性。


    总的来说,使用 id 类型的代理实体变量可以提高代码的灵活性,但是也需要注意在使用时避免类型转换错误。

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能