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

前端之家收集整理的这篇文章主要介绍了objective-c – id是“根类型”还是只是一种类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
许多Objective-C开发人员,无论是新手还是专家,似乎都认为id就像是一些神奇的全部类型,您可以将对象投射到任何旧的消息,并发送任何旧的消息(至少从编译器).但是,当实际看到id的定义时,它只不过是一个指向objc_object的指针.以这种方式,它实际上是一个“Objective-C对象”,但是没有什么可以从id下降.即使是NSObject的头也不像:
@interface NSObject : id

它只是:

@interface NSObject

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

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

解决方法

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

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

猜你在找的C&C++相关文章