注:
1.在mac終端可以用find命令可找到頭文件,如 find / -name "objc.h"
1.Class的定義(objc.h):
<pre name="code" class="objc">typedef struct objc_class *Class;
2.id 的定義(objc.h):
typedef struct objc_object *id;
struct objc_object {
Class isa;
}
3.NSObject的定義(NSObject.h):
@interface NSObject <NSObject> {
Class isa;
}
//...
//以及包含一些列的方法
由此可以見:id 是一個指向NSObject的類型的指針
4. objc_class結構體的定義(objc.h):
struct objc_class {
struct objc_class * isa;
struct objc_class * super_class; /*父類*/
const char *name; /*類名字*/
long version; /*版本信息*/
long info; /*類信息*/
long instance_size; /*實例大小*/
struct objc_ivar_list *ivars; /*實例參數鏈表*/
struct objc_method_list **methodLists; /*方法鏈表*/
struct objc_cache *cache; /*方法緩存*/
struct objc_protocol_list *protocols; /*協議鏈表*/
};
參考文章:
http://blog.csdn.net/kesalin/article/details/7211228
http://blog.csdn.net/kesalin/article/details/6689226