objective c 分配和初始化物件

2022-01-29 02:05:58 字數 690 閱讀 5573

和c#類似oc中也有乙個根型別,也就是nsobject,它包含乙個alloc方法和乙個init方法。顧名思義,alloc用於申請記憶體,建立乙個物件的內部結構,並且將例項變數賦值為0。

init方法賦值將變數的值賦值為預設值(似乎和0不一樣),然後執行一些其它的任務。

alloc就像進入了一輛車裡,而init是打火發動汽車。

正常寫法:

myobject *someobject = [[myobject alloc] init];

[someobject dosomething];

另一種是:

myobject *someobject = [myobject new];

其實這樣寫程式照樣執行

myobject *someobject = [myobject alloc];

[someobject dosomething];

為嘛呢?因為在nsobject中的定義的init方法並沒有初始化任何東西,它只是返回了自身。在類被使用之前,需要執行一些任務才能使用,而init只不過是這些任務的佔位符罷了。nsobject並沒有初始化任何東西,但是[[myobject alloc] init]這種寫法仍舊是推薦的寫法,初始化方法返回的是id型別的物件,因此init方法和alloc方法返回的未必是乙個物件。這種技術( [[myobject alloc] init])叫做two-stage creation。

Objective C 物件初始化

首先申明下,本文為筆者學習 objective c 基礎教程 的筆記,並加入筆者自己的理解和歸納總結。兩種方法建立物件,這兩種方法是等價的。init方法中,呼叫super init方法,並更新self。如果self為nil,則初始化失敗。最後返回self。inte ce shape nsobject...

Objective C 繼承,初始化方法

一.繼承 1.繼承的上層 父類,繼承的下層 子類 2.繼承是單向的 3.繼承具有傳遞性 子類繼承父類的特徵和行為 4.子類擴充套件父類,更加具體 oc中的繼承 1.oc中的繼承,即乙個類繼承另乙個類 2.被繼承的類稱為父類或超類 3.繼承的類為子類 繼承的特點 1.oc中只允許單繼承 2.沒有父類的...

Objective C 類的初始化

fraction myfraction 新建乙個物件來儲存乙個fraction類。號 asterisk 其實是宣告是指向乙個fraction物件的指標。實際上myfraction除了記憶體位址外並不儲存任何fraction的資料。myfraction fraction alloc alloc是all...