objective-c:分配和初始化對象

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.