注:
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