objective-c – id是“根类型”还是只是一种类型?

objective-c – id是“根类型”还是只是一种类型?,第1张

概述许多Objective-C开发人员,无论是新手还是专家,似乎都认为id就像是一些神奇的全部类型,您可以将对象投射到任何旧的消息,并发送任何旧的消息(至少从编译器).但是,当实际看到id的定义时,它只不过是一个指向objc_object的指针.以这种方式,它实际上是一个“Objective-C对象”,但是没有什么可以从id下降.即使是NSObject的头也不像: @interface NSObjec 许多Objective-C开发人员,无论是新手还是专家,似乎都认为ID就像是一些神奇的全部类型,您可以将对象投射到任何旧的消息,并发送任何旧的消息(至少从编译器).但是,当实际看到ID的定义时,它只不过是一个指向objc_object的指针.以这种方式,它实际上是一个“Objective-C对象”,但是没有什么可以从ID下降.即使是NSObject的头也不像:
@interface NSObject : ID

它只是:

@interface NSObject

现在,我坚信,ID的中立性是实施的一个副作用,但是由于还有其他的一些,我必须问:

ID类型的主要功能究竟是什么?

解决方法 ID只是一个通用的对象指针,如你所见.既然它不是一个类,没有什么可以继承.严格来说,NSObject不是Objective-C语言本身的一部分,只是特定实现的一部分.

ID对于具有这种弱类型的Objective-C的语言是方便的;它允许您保留通用对象指针,并发送任意消息.

总结

以上是内存溢出为你收集整理的objective-c – id是“根类型”还是只是一种类型?全部内容,希望文章能够帮你解决objective-c – id是“根类型”还是只是一种类型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存