OC語言 構造方法和分類的使用

2021-06-29 14:56:48 字數 3466 閱讀 1030

一.構造方法

1呼叫+alloc分配儲存空間

person *p = [person alloc]
2初始化   -init

person *p1 = [p init];
//可以集成為一句
person * p2 = [[person alloc] init];

3如果有一些特殊需要,例如建立出來的物件是乙個特定值,可以重寫init方法,進行初始化

(id)init

精簡版的重寫init方法

- (id)init

return self;
}
構造方法
首先會呼叫父類的構造方法[super init],
再進行子類內部成員變數的初始化。

當父類中有擁有成員變數,子類需要增加成員變數的時候,只需要更改子類的init方法就可以達到

4.自定義構造方法:

- (void)initwithname:(nsstring *)name andage:(int)age andno:(int)no
{// 父類中的name和age留給父類初始化,這裡只初始化自己

if( self =[super initwithname:name andage:age] )

return self;
}

二.分類 :category

1.分類依賴於類,不改變原來類的模式下,給原來類擴充方法,不修改原來類的**。

#import "person.h" // 給person這個類增加方法必須包含person的標頭檔案// @inte***ce 類名(分類名稱)
@inte***ce person (sy)

注意點:

分類不能增加成員變數,只能增加方法。

呼叫方法時,優先去分類中找,然後再去父類中找。

分類會重新實現原來類中的方法,覆蓋原來方法,導致原來方法無法使用。

分類-》原來類-》父類

練習:給nsstring擴充乙個類方法,計算某個字串阿拉伯數字

+ (int)numbercountofstring:(nsstring *)str
}return count;
}
給nsstring擴充乙個物件方法,計算某個字串阿拉伯數字

-(int)numbercount
}return count;
}

呼叫方法:

int count = [@"sjja123kadjkh213" numbercount]; // 計算數字個數

類的本質也是物件,是乙個class型別的物件,簡稱類物件 

獲取記憶體中了類物件

class c = [p class];

另一種獲取記憶體中的類物件

class c1 = [person class];

2.類的load方法

在類被載入的時候呼叫+load方法,不管你使用不使用,它都會載入。分類中也會載入這個方法

@implementation person

+(void)load

@end

3.類的initialize方法

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

+(void)initialize

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

4.description方法

這種情況下,首先會呼叫p的-description方法的返回值(nsstring *)顯示到螢幕上。

所以要重寫description方法

// 決定了類物件輸出結果
- (nsstring *)description
三.nslog的輸出補充

person *p =[ [person alloc] init];

// 指標變數的位址

nslog(@"%p", &p);

// 物件位址

nslog(@"%p", p);

// 類名+物件位址

nslog(@"%@", p);

__line__  //  當前**的行號。用%d輸出

__file__ //  輸出檔案路徑,用%s輸出,使用printf("%s\n",__file__);

__func__ // 輸出當前函式名,用%s輸出,使用nslog(@"%s\n",__func__);

四.sel資料型別

乙個sel型別就代表乙個方法

// 先設定乙個sel型別的資料s儲存(test1:)sel s = @selector(test1:);
// 再呼叫test1方法,傳入@「sun」
[p performselector:s withobject:@"sun"];

每個方法內部都有乙個_cmd,它代表當前方法。只能轉成字串呼叫

- (void)test2

OC 構造方法和分類

建立乙個可用的物件 person p person new new方法實際上是分為兩步來建立乙個物件 1 使用 alloc方法來分配儲存空間 返回分配的物件 2 使用 init方法來對物件進行初始化。可以把new方法拆開如下 1.呼叫類方法 alloc分配儲存空間,返回未經初始化的物件 person...

OC語言構造方法

oc語言構造方法 一 構造方法 一 構造方法的呼叫 完整的建立乙個可用的物件 person p person new new方法的內部會分別呼叫兩個方法來完成 2件事情,1 使用 alloc 方法來分配儲存空間 返回分配的物件 2 使用 init 方法來對物件進行初始化。可以把new 方法拆開如下 ...

OC語言 構造方法

一 構造方法 1.什麼是oc構造方法?oc構造方法是用來初始化物件時呼叫的方法,是個物件方法,以 號開頭。2.如果你先建立乙個person類,讓建立後的person類新建立的物件預設的年齡為20歲,該如何處理?重寫構造方法,在重寫的構造方法中對person的成員變數進行賦值。二 物件初始化分析 pe...