gpt4 book ai didi

objective-c - id 是 "root type"还是只是一种类型?

转载 作者:太空狗 更新时间:2023-10-30 03:26:21 31 4
gpt4 key购买 nike

许多 Objective-C 开发人员,无论是新手还是专家,似乎都将 id 视为某种神奇的万能类型,您可以将其转换为对象并向其发送任何旧消息而不会产生任何后果(至少来自编译器)。但是,当真正查看 id 的定义时,它只不过是一个指向 objc_object 的指针。这样,它实际上是一个“Objective-C 对象”,但没有任何东西可以从 id“下降”。甚至 NSObject 的 header 也不像:

@interface NSObject : id

上面写着:

@interface NSObject

现在,我坚信 id 所谓的类型中立性是其实现的副作用,但因为有些人仍然不这么认为,我必须问:

id 类型的主要作用到底是什么?

最佳答案

正如您所发现的,

id 只是一个通用对象指针。因为它不是一个类,所以没有任何东西可以从它继承。 NSObject,严格来说,不是 Objective-C 语言本身的一部分,只是特定实现的一部分。

id 对于像 Objective-C 这样弱类型的语言很方便;它允许您保留通用对象指针并向它们发送任意消息。

关于objective-c - id 是 "root type"还是只是一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027059/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com