和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...