cocoa Class、id、以及NSObject 的關係--筆錄

注:

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



發佈了31 篇原創文章 · 獲贊 55 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章