類是一個(gè)對象是Class類型的對象簡稱類對象,一個(gè)任意的類型,表示一個(gè)Objective-C類,類名就代表著類對象,每個(gè)類只有一個(gè)類對象。

1.類也是個(gè)對象
類是一個(gè)對象是Class類型的對象簡稱類對象
Class類型的定義
// 一個(gè)任意的類型,表示一個(gè)Objective-C類 typedef struct objc_class *Class;
類名就代表著類對象,每個(gè)類只有一個(gè)類對象
獲取類對象
// 獲取類對象兩種方式person1 和 person2 Class person1 = [Person class]; Person *p = [Person new]; Class person2 = [p class]; // 類對象調(diào)用類方法 Person *person3 = [person1 new];
2.類的加載方法和初始化方法
+ (void)load; // 在類加載的時(shí)候調(diào)用一次 + (void)initialize; // 在使用某個(gè)類的時(shí)候調(diào)用一次
+load方法:
在程序啟動(dòng)的時(shí)候會(huì)加載所有的類和分類,并且自動(dòng)調(diào)用所有類和分類的+load方法
程序啟動(dòng)先加載父類然后是子類,也就是先調(diào)用父類的+load方法再調(diào)用子類的+load方法
先加載原始類再加載分類
不管程序運(yùn)行有沒有用到這個(gè)類,都會(huì)調(diào)用+load加載
+initialize方法:
在第一次使用某個(gè)類時(shí)比如創(chuàng)建對象,都會(huì)調(diào)用一次+initialize方法
一個(gè)類只會(huì)調(diào)用一次+initialize方法,先調(diào)用父類再調(diào)用子類的initialize方法