Objective C基礎 id 構造方法

2021-06-28 09:32:42 字數 1908 閱讀 4979

一、 id

id是萬能指標,能指向任何oc物件,相當於nsobject *

id型別的定義

typedef  struct  objc_object

*id;

id的使用:

id後面不要加 「*」 ,因為id本身就是指標型別

id p = [類名 new];

id的侷限性:

如果呼叫乙個不存在的方法,編譯器會立馬報錯

二、構造方法

1.

構造方法是用來初始化物件的方法

完整地建立乙個可用的物件可分為2步

(1). 分配儲存空間,這個用到alloc方法,該方法是乙個類方法

(2). 初始化,用init方法,該方法是物件方法。

void main()

其實這兩條**可以合成一條:

void main()

那麼這就是建立物件的過程,前面用到的物件建立[person new], 其實裡面的new方法就是alloc和init的融合而成。

2.重寫 -init方法

[super init] 呼叫的是父類的init方法,返回的是當前所指向的物件

@implementation person

// 重寫 -init方法

- (id)init

//返回乙個已經初始化完畢的物件

return self;

@end

**可以進一步優化:

- (id)init

return self;

}

重寫構造方法的目的:為了讓物件建立出來,成員變數就會有一些固定的值。

重寫構造方法的注意點:

--> 先呼叫父類的構造方法([super init])

--> 再進行子類內部成員變數的初始化

構造方法 -init方法的執行過程:(如下圖)

3.自定義構造方法

自定義構造方法的規範:

--> 一定是物件方法,一定以 - 開頭

--> 返回值一般是id型別

--> 方法名一般以initwith開頭

@implementation person

- (id)init // 重寫父類的init方法

return self;

}- (id)initwithage:(int)age

return self;

}- (id)initwithname:(nsstring *)name

return self;

}@end

**還可以換一種方式,實現的功能一樣,由於用@property宣告的成員變數預設是私有的,那麼子類不能直接訪問父類成員變數,可以用self關鍵字和點語法來呼叫,如:

- (id)initwithname:(nsstring *)name andage:(int)age andno:(int)no

return self;

}

再來看看這種方式:

- (id)initwithname:(nsstring *)name andage:(int)age andno:(int)no

return self;

}

相比上段該段**更加完美,這樣

父類的屬**給父類方法去處理,子類方法處理子類自己的屬性

Objective C 一一 id型別

id 是乙個資料型別 並且是乙個動態資料型別 id是乙個資料型別 並且是乙個動態資料型別 既然是資料型別 所以就可以用來 1.定義變數 2.作為函式的引數 3.作為函式的返回值 靜態型別和動態型別 為什麼要有動態型別?id資料型別與靜態型別 靜態型別 將乙個指標變數定義為特定類的物件時,使用的是靜態...

OBJECTIVE C語言基礎

1.oc語言的特點 objective c,通常寫作objc,oc和較少用的 objective c或obj c,是擴充c的物件導向程式設計語言。objective c是靜態的,強型別定義的語言。只允許單根繼承 cocoa中的根是nsobject 2.常量 程式執行過程中,值不能被改變的量稱為常量。...

Objective C 記憶體管理基礎

之前的兩篇拙文c語言 記憶體管理基礎 c語言 記憶體管理深入 介紹了關於c語言在記憶體管理方面的相關知識。但是對於從事ios開發的同胞們來說,顯然objective c用的更多,所以筆者想用兩篇文章盡量完整的介紹一下objective c的記憶體管理,本文為第一部分,將從類和物件 所有權策略及引用計...