在IOS的SDK头文件中,能看到一些定义,在objc.h中,可以看到id的定义如下
typedef struct objc_class *Class
typedef struct objc_class{
Class isa;
}*id;
在NSObject.h中,可以看到NSObject类的定义如下
@interface NSObject<NSObject>{
Class isa
}
+ (void)load;
+ (void)initialize;
....
两个类型都包含有Class isa,但NSObject同时包含了一些其他的方法,并需要实现NSObject协议。
所以NSObject *可以用id来表示。但id不能用NSObject *来表示
本文解析了iOS SDK头文件中id与NSObject*类型的定义及其区别。通过objc.h和NSObject.h文件的具体内容,解释了这两种类型如何关联,以及为什么NSObject*可以被id表示而反之则不成立。
528

被折叠的 条评论
为什么被折叠?



