概念:category 分類是oc特有的語言,依賴於類。
分類的作用:在不改變原來的類內容的基礎上,為類增加一些方法。
新增乙個分類:
檔案結構圖:
在分類中新增乙個方法
study方法的實現
測試程式:
分類只能增加方法(包括類方法和物件方法),不能增加成員變數
在分類方法的實現中可以訪問原來類中的成員變數;
分類中可以重新實現原來類中的方法,但是會覆蓋掉原來的方法,導致原來的方法無法再使用(警告);
方法呼叫的優先順序:分類->原來的類->父類,若包含有多個分類,則最後參與編譯的分類優先;
在很多的情況下,往往是給系統自帶的類新增分類,如nsobject和nsstring,因為有的時候,系統類可能並不能滿足我們的要求。
在大規模的應用中,通常把相應的功能寫成乙個分類,可以有無限個分類,對原有類進行擴充,一般分模組寫,乙個模組乙個分類。
給nsstring類增加乙個類方法,計算某個字串物件中阿拉伯數字的個數;
給nsstring類增加乙個物件方法,計算當前字串物件中阿拉伯數字的個數;
分類中方法的宣告
分類中方法的實現
測試程式:
類本身也是乙個物件,是class型別的物件,簡稱「類物件」。
class型別的定義:
typedef struct obj class *class;
類名就代表著類物件,每個類只有乙個類物件。
利用class 建立 person類
利用person 建立person型別的物件
```person *p=[[person alloc] init];
```
獲取記憶體中的類物件有兩種方法:
(1)class c=[p class];//指向類的物件的指標呼叫class方法
(2)class c1=[person class];//使用類名呼叫class方法
測試程式:
當程式啟動時,就會載入專案中所有的類和分類,而且載入後會呼叫每個類和分類的+load方法,只會呼叫一次;
當第一次使用某個類時,就會呼叫當前類的+initialize方法;
先載入父類,再載入子類(先呼叫父類的+load方法,再呼叫子類的+load方法,最後呼叫分類的+load方法),先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法)。
注意:在初始化的時候,如果在分類中重寫了+initialize方法,則會覆蓋掉父類的。
重寫+initialize方法可以監聽類的使用情況。
OC語言類的深入和分類
oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc 特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包括類...
OC語言類的深入和分類
感謝 oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包...
OC語言類的深入和分類
oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包括類方...