2011-11-28 33 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