2011-11-28 69 views
15

如果我有這樣的代碼,ARC等同於autorelease?

+ (MyCustomClass*) myCustomClass 
{ 
    return [[[MyCustomClass alloc] init] autorelease]; 
} 

此代碼保證返回的對象會被自動釋放。 在ARC中相當於什麼?

回答

20

ARC中沒有等價物,因爲您不需要自己動手。 它會在幕後發生,你不能自己做。

您只需使用 -

+ (MyCustomClass*) myCustomClass 
{ 
    return [[MyCustomClass alloc] init]; 
} 

我建議你看在WWDC 2011的ARC介紹,因爲它很簡單,當你得到它。

看看這裏: https://developer.apple.com/videos/wwdc/2011/

而且在電影的傢伙說 -

你不必去想它了(幾乎)

+4

請注意,發生什麼取決於您如何命名您的方法。 – Thilo

+1

這是trow,這就是爲什麼我幾乎添加到最後一行。我真的認爲WWDC的演講很棒,並解釋了ARC的所有主要問題。 – shannoga

+1

也許我必須知道每個細節在底下發生什麼,因爲*幾乎* :) – Eonil

7

編譯時與ARC,你只需將它寫爲:

+ (MyCustomClass *)myCustomClass 
{ 
    return [[MyCustomClass alloc] init]; 
} 

和編譯器/運行庫將爲您處理剩下的問題。

+1

+1爲實際回答問題 – JeremyP

+0

運行時與ARC無關,這是所有編譯器的魔力 – DanZimm

+0

@DanZimm否 - 運行時是也在工作。例如:運行時允許跨幀傳輸對象的所有權。 http://clang.llvm.org/docs/AutomaticReferenceCounting.html#runtime – justin