【问题标题】:ARC equivalent of autorelease?ARC相当于自动释放?
【发布时间】:2012-01-07 16:31:54
【问题描述】:

如果我有这个代码,

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

此代码保证返回的对象是自动释放的。 这在 ARC 中相当于什么?

【问题讨论】:

    标签: objective-c clang automatic-ref-counting autorelease


    【解决方案1】:

    ARC 中没有等价物,因为您不需要自己做。 它会在幕后发生,你不能自己做。

    你只需使用 -

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

    我建议你观看 2011 WWDC 中的 ARC 介绍,因为它非常简单。

    看这里: https://developer.apple.com/videos/wwdc/2011/

    正如电影中的那个人所说-

    你不必再考虑它了(几乎)

    【讨论】:

    • 请注意,发生的情况取决于您如何命名方法。
    • 那是trow,这就是为什么我在最后一行添加了几乎。我真的认为 WWDC 讲座很棒,它解释了 ARC 的所有主要问题。
    • 也许我必须知道下面发生的每一个细节,因为 几乎 :)
    【解决方案2】:

    使用 ARC 编译时,您只需将其写为:

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

    编译器/运行时会为你处理剩下的事情。

    【讨论】:

    • 运行时与ARC无关,都是编译器的魔力
    • @DanZimm no - 运行时也在工作。例如:运行时允许跨帧传输对象的所有权。 clang.llvm.org/docs/AutomaticReferenceCounting.html#runtime
    • 对,但是当添加 arc 支持时,运行时并没有改变,这些功能已经存在 - 注意我指的是苹果开始支持 arc 的时间
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2013-09-07
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多