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