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