iOS 簡(jiǎn)單理解類的本質(zhì)
作者:佚名
類是一個(gè)對(duì)象是Class類型的對(duì)象簡(jiǎn)稱類對(duì)象,一個(gè)任意的類型,表示一個(gè)Objective-C類,類名就代表著類對(duì)象,每個(gè)類只有一個(gè)類對(duì)象。
1.類也是個(gè)對(duì)象
- 類是一個(gè)對(duì)象是Class類型的對(duì)象簡(jiǎn)稱類對(duì)象
- Class類型的定義
- // 一個(gè)任意的類型,表示一個(gè)Objective-C類
- typedef struct objc_class *Class;
- 類名就代表著類對(duì)象,每個(gè)類只有一個(gè)類對(duì)象
- 獲取類對(duì)象
- // 獲取類對(duì)象兩種方式person1 和 person2
- Class person1 = [Person class];
- Person *p = [Person new];
- Class person2 = [p class];
- // 類對(duì)象調(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)建對(duì)象,都會(huì)調(diào)用一次+initialize方法
- 一個(gè)類只會(huì)調(diào)用一次+initialize方法,先調(diào)用父類再調(diào)用子類的initialize方法
責(zé)任編輯:閆佳明
來(lái)源:
cnblogs