Objective-c中的id类,为什么它适合任何类?

时间:2019-05-25 13:17:01

标签: objective-c

我对Objective-C中的类id有疑问。我不知道为什么它适合任何课程,例如:

id objc = [[UIButton alloc] init]; 

我知道id类是指向名为objc_object的结构的指针,但是代码的右侧返回实例的内存地址,该实例的大小与结构{{1} }。那么为什么可以这样做呢?

objc_object

1 个答案:

答案 0 :(得分:1)

内存地址大小相同。即使您使用UILabel * objc = [[UIButton alloc] init];也可以!使用 KnownClassType 的好处是,编译器(和IDE)会在运行该应用程序之前将其强制转换并显示给您。但是无法在运行时保证类型。 id只是AnyObject类型,您应该自己进行类型转换。