黑馬程序員_OC基礎03_類的本質(load\initialize)

---------------------------------------- android培訓java培訓、期待與您交流! -------------------------------------


一、  類也是個對象

1、 其實類也是一個對象,是Class類型的對象,簡稱“類對象”

2、Class類型的定義

typedef struct objc_class *Class;

3、 類名就代表着類對象,每個類只有一個類對象
 

二、  +load和+initialize(熟記~~)

1、 +load 

1)在程序啓動的時候會加載所有的類和分類,並調用所有類和分類的+load方法

2) 先加載父類,再加載子類;也就是先調用父類的+load,再調用子類的+load

3)先加載元原始類,再加載分類

4) 不管程序運行過程有沒有用到這個類,都會調用+load加載



2、+initialize

1)在第一次使用某個類時(比如創建對象等),就會調用一次+initialize方法

2)一個類只會調用一次+initialize方法,先調用父類的,再調用子類的



三、   獲取類對象的2種方式

Class c = [Person class]; // 類方法
或者
Person *p = [Person new];
Class c2 = [p class]; // 對象方法

四、   類對象調用類方法

Class c = [Person class]; //使用多態的語法
Person *p2 = [c new];



---------------------------------------- android培訓java培訓、期待與您交流! -------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章