Objective-C 中 (Object*) 和 (id) 的区别

发布于 2024-10-09 07:34:41 字数 391 浏览 2 评论 0原文

请帮助我找出这两个代码片段之间的区别: (在片段中 Foo 是从 objc/Object.h 中声明的 Object 派生的类)

// Snippet 1
Object* o = [Foo new];
[o free];

// Snippet 2
id o = [Foo new];
[o free];

谢谢!

编辑
感谢您的帮助!让我分享一个我找到的链接,也许它会帮助那些像我一样遇到同样问题并希望更好地理解它的人: id_vs_NSObject

Help me please to find out what's the difference between these two code snippets:
(In the snippets Foo is a class derived from Object declared in objc/Object.h)

// Snippet 1
Object* o = [Foo new];
[o free];

// Snippet 2
id o = [Foo new];
[o free];

Thanks!

EDIT
Thanks for the helpful answers! Let me share a link that I found, maybe it'll help those, who meets the same question like me, and want to understand it better:
id_vs_NSObject.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深居我梦 2024-10-16 07:34:41

id 可以是任何内容,并且可以在没有警告的情况下响应系统中的任何消息,因为它可以是任何类型。 Object *(您的意思是 NSObject *?)是强类型的——编译器假设它只响应 Object 已知会响应的方法到。

id can be anything and can respond to any message in the system without warning, as it could be of any type. Object * (do you mean NSObject *?) is strongly typed--the compiler assumes it only responds to methods that Object is known to respond to.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文