類物件的理解及應用

2021-07-30 03:30:52 字數 1845 閱讀 6372

1,類的本質其實也是乙個物件(類物件,class型別);

類物件*類物件在程式執行時一直存在。

*類物件是一種資料結構,儲存類的基本資訊:類大小,類名稱,類的版本以及訊息與函式的對映表等

*每乙個物件都包含乙個指向其類物件的isa指標。

2、類物件如何獲取

通過例項物件獲取

dog *d1 = [dog new];

dog *d2 = [dog new];

class c =   [d1 class];

class c2 = [d2 class];

通過類名獲取(類名其實就是類物件)

class c3 = [ dog  class ];

因為類物件在整個程式中只存在乙份,

所以 c = c2 = c31,

當程式一執行

,**就會加載入到**區;

2,**載入完成之後,就會呼叫+(

void

)load;方法,建立class型別類物件;做好程式執行的準備;

3,然後找到main函式執行**;

4,當遇到new建立物件時,通過當前類的類物件進行建立.

3.類物件的使用

1)可以用來呼叫類方法:

獲取類物件

class c1 = [person class];

使用類物件呼叫類方法

[c1 test]; // test是乙個+號方法

2)可以用來例項化例項物件, 並且呼叫物件方法

//獲取類物件

class c1 = [person class];

//使用類物件建立例項物件

person *p = [c1 new];

[p test];  // -test 呼叫物件方法

4. 類物件儲存細節

5.sel型別 (@selector()選擇器)

就是對方法的一種包裝,將方法包裝成sel型別;

sel是一種新的資料型別。和id、class一樣。

person *p = [person new];

sel s1 = @selector(test);

[p performselector:s1];

person

類中有乙個方法:

-(void)test:(nsstring *)str;

1,當person類載入進記憶體之後,就會建立class型別類物件;

2,在內物件中將test:方法包裝成sel型別,並通過imp

*記錄test方法的位址;

3,當[p test:

@""];時,會先將test再次包裝成sel型別,然後拿著這個新包裝的sel去person類物件中去找,找到跟自己相同的sel之後,就會通過位址呼叫這個方法;如果找不到就直接報錯;

類物件的使用:

#pragma mark main.m

#import

#import "person.h"

int main(int argc, const

char * argv)

return0;}

#pragma mark person.h

#import

@inte***ce

person :

nsobject

-(void)test;

+(void)test;

@end

#pragma mark person.m

#import

"person.h"

@implementation person

-(void)test

+(void)test

@end

類和物件的理解及類的建立

程式設計的兩大思想 面向過程和物件導向 面向過程 主要是步驟,一步一步實現 物件導向 主要是物件,找到物件,使用其屬性和方法 兩者的比較 面向過程的效能更高些,但維護和復用比較困難 物件導向再維護和復用比較容易,效能相對較低 類和物件 類抽取了物件的公共部分,是泛指的,而物件是具體的,比如,一本書,...

類和物件的理解及心得L

一 類的定義 具有同種屬性的物件稱為類,是個抽象的概念。二 類的組成 類由公有和私有兩部分組成。公有部分主要是成員函式,私有部分是一般資料。class 類名 我們先看成員函式,成員函式有兩個作用 一是運算元據成員,包括訪問和修改資料成員 二是用於協同不同的物件操作。類的成員可以是其他類的物件,但不能...

物件和類的理解

什麼是物件 程式中的物件是對現實物件的抽象。現實中的物件包括可感知的物體以及思維中的概念。例如,天鵝 鬧鐘 飛機等各種物體可以看做乙個個的物件,學校 公司 家庭等概念也可以看做乙個個的物件。現實物件有乙個特點,即它是具有屬性和行為的整體。例如乙個鬧鐘具有當前時間刻度 預定時間等 屬性 並具有指示時間...