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 類名 我們先看成員函式,成員函式有兩個作用 一是運算元據成員,包括訪問和修改資料成員 二是用於協同不同的物件操作。類的成員可以是其他類的物件,但不能...
物件和類的理解
什麼是物件 程式中的物件是對現實物件的抽象。現實中的物件包括可感知的物體以及思維中的概念。例如,天鵝 鬧鐘 飛機等各種物體可以看做乙個個的物件,學校 公司 家庭等概念也可以看做乙個個的物件。現實物件有乙個特點,即它是具有屬性和行為的整體。例如乙個鬧鐘具有當前時間刻度 預定時間等 屬性 並具有指示時間...