OC類的介紹

2021-06-22 22:36:20 字數 1859 閱讀 8255

類的本質

1,類也是個物件

> 其實類也是乙個物件,是class型別的物件,簡稱「類物件」

> class型別的定義

typedef struct objc class *class;

> 類名就代表著類物件,每個類只有乙個類物件

2,獲取類物件的2種方式

(1),class c = [person class];

(2),person *p = [person new];

class c2 = [p class];

3,類物件方法舉例

類物件呼叫類方法

class c = [person class];

person *p2 = [c new];

+load和+initialize方法

1,程式啟動時,就會載入專案中所有的類和分類,而且載入後會呼叫每個類和分類的+load方法。只會呼叫一次

2,當第一次使用某個類時,就會呼叫當前類的+initialize方法

3,先載入父類,再載入子類(先呼叫父類的+load方法,再呼叫子類+load方法)

先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法)

description方法

1,會呼叫物件p的-description方法

2,拿到-description方法的返回值(nsstring *)顯示到螢幕上

3,-description方法預設返回的時「類名+記憶體位址」

4,+description決定了類物件的輸出結果

5,description方法體裡面不能輸出self,會造成死迴圈

6,方法示例

- (nsstring *)description

nslog輸出補充

輸出行號

nslog(@"%d",_line_);

輸出當前函式名

nslog(@"%s",_func_);

輸出原始檔的名稱

nslog輸出c語言字串的時候,不能有中文

nslog(@"%s",_file_);

sel原理

> sel其實是對方法的一種包裝,將方法包裝成乙個sel型別的資料,去找對應的方法位址,找到方法位址就可以呼叫方法

> 每個類方法列表儲存在類物件中

> 每個類的方法都有乙個與之對應的sel型別的物件

> 根據乙個sel物件就可以找到方法的位址,進而呼叫方法

> sel型別的定義 typedef struct obic selector *sel;

1,sel使用

當物件呼叫方法時

(1),把方法包裝sel型別的資料

(2),根據sel資料找到對應的方法位址

(3),根據方法位址呼叫對應的方法

呼叫方法可以用兩種方式

直接用物件呼叫

[p test]

間接呼叫

[p performselector:@selector(test)];

2,sel物件的創造

sel s=@selector(test);

sel s2 = nsselectorfromstring(@"test");

3,sel物件的其他用法

// 將sel物件轉為nsstring物件

nsstring *str = nsstringfromselector(@selector(test));

person *p=[person new];

// 呼叫物件p的test方法

[p performselector:selector(test)];

4,sel 型別_cmd代表著當前方法

[self performselector:_cmd]; 死迴圈

OC中類與物件的使用介紹

1 類如何生成 擁有相同 類似 屬性和行為的物件都可以抽象出乙個類。類只是一張物件的設計圖。2 設計類的有幾部分 1 類名 書寫規範 類名的第乙個字母必須是大寫 不能有下劃線 多個英文單詞,用駝峰表示 2 屬性 3 行為 哪個物件對行為最清楚,就把行為寫到哪個物件中去。3 oc中類的書寫格式 1 在...

OC中類與物件的使用介紹

1 類如何生成 擁有相同 類似 屬性和行為的物件都可以抽象出乙個類。類只是一張物件的設計圖。2 設計類的有幾部分 1 類名 書寫規範 類名的第乙個字母必須是大寫 不能有下劃線 多個英文單詞,用駝峰表示 2 屬性 3 行為 哪個物件對行為最清楚,就把行為寫到哪個物件中去。3 oc中類的書寫格式 1 在...

oc中的oop基礎及類的基本介紹

物件導向的 oop 的基礎知識 類 class 表示一組物件資料的結構體,物件通過類來得到自身。類名首字母大寫。物件 objcet 是一種包含值和指向其類的隱藏指標的結構體。執行中的程式中通常會有n個物件,首字母不用大寫。例項 instance 是對物件的另一種稱呼。訊息 message 是物件執行...