iOS應(yīng)用開發(fā):簡單理解類的本質(zhì)
文章分類:公司動態(tài) 發(fā)布時間:2014-04-04 原文作者:tbkj 閱讀( )
類是一個對象是Class類型的對象簡稱類對象,一個任意的類型,表示一個Objective-C類,類名就代表著類對象,每個類只有一個類對象。
1.類也是個對象
類是一個對象是Class類型的對象簡稱類對象
Class類型的定義
// 一個任意的類型,表示一個Objective-C類 typedef struct objc_class *Class;
類名就代表著類對象,每個類只有一個類對象
獲取類對象
// 獲取類對象兩種方式person1 和 person2 Class person1 = [Person class]; Person *p = [Person new]; Class person2 = [p class]; // 類對象調(diào)用類方法 Person *person3 = [person1 new];
2.類的加載方法和初始化方法
+ (void)load; // 在類加載的時候調(diào)用一次 + (void)initialize; // 在使用某個類的時候調(diào)用一次
+load方法:
在程序啟動的時候會加載所有的類和分類,并且自動調(diào)用所有類和分類的+load方法
程序啟動先加載父類然后是子類,也就是先調(diào)用父類的+load方法再調(diào)用子類的+load方法
先加載原始類再加載分類
不管程序運行有沒有用到這個類,都會調(diào)用+load加載
+initialize方法:
在第一次使用某個類時比如創(chuàng)建對象,都會調(diào)用一次+initialize方法
一個類只會調(diào)用一次+initialize方法,先調(diào)用父類再調(diào)用子類的initialize方法
1.類也是個對象
類是一個對象是Class類型的對象簡稱類對象
Class類型的定義
// 一個任意的類型,表示一個Objective-C類 typedef struct objc_class *Class;
類名就代表著類對象,每個類只有一個類對象
獲取類對象
// 獲取類對象兩種方式person1 和 person2 Class person1 = [Person class]; Person *p = [Person new]; Class person2 = [p class]; // 類對象調(diào)用類方法 Person *person3 = [person1 new];
2.類的加載方法和初始化方法
+ (void)load; // 在類加載的時候調(diào)用一次 + (void)initialize; // 在使用某個類的時候調(diào)用一次
+load方法:
在程序啟動的時候會加載所有的類和分類,并且自動調(diào)用所有類和分類的+load方法
程序啟動先加載父類然后是子類,也就是先調(diào)用父類的+load方法再調(diào)用子類的+load方法
先加載原始類再加載分類
不管程序運行有沒有用到這個類,都會調(diào)用+load加載
+initialize方法:
在第一次使用某個類時比如創(chuàng)建對象,都會調(diào)用一次+initialize方法
一個類只會調(diào)用一次+initialize方法,先調(diào)用父類再調(diào)用子類的initialize方法
原文來自:tbkj