我对Objective-C中的类id
有疑问。我不知道为什么它适合任何课程,例如:
id objc = [[UIButton alloc] init];
我知道id
类是指向名为objc_object
的结构的指针,但是代码的右侧返回实例的内存地址,该实例的大小与结构{{1} }。那么为什么可以这样做呢?
objc_object
答案 0 :(得分:1)
内存地址大小相同。即使您使用UILabel * objc = [[UIButton alloc] init];
也可以!使用 KnownClassType 的好处是,编译器(和IDE)会在运行该应用程序之前将其强制转换并显示给您。但是无法在运行时保证类型。 id
只是AnyObject
类型,您应该自己进行类型转换。