2014-06-10 96 views
75

在Swift中,我注意到没有@autoreleasepool{}构造,尽管Swift确实使用了ARC。在Swift中管理autoreleasepool的正确方法是什么?或者出于某种原因删除了它?Swift中@autoreleasepool的等价物是什么?

+0

也许它只是没有发布给我们(并且实现了一个自定义的ObjC桥很容易) –

+0

也相关和感兴趣:“是否有必要在Swift程序中使用autoreleasepool? http://stackoverflow.com/questions/25860942/is-it-necessary-to-use-autoreleasepool-in-a-swift-program?rq=1 –

回答

116

对此进行了详细的WWDC 2014 session video 418号解释“改善你与仪器应用程序”,您也可以下载一个PDF。

但在短,语法是:

autoreleasepool { 
    /* code */ 
} 
+7

重要的是要注意''**必须**与'autoreleasepool'在同一行,否则你必须把它包装在'()'中。那*真的*让我老实说... – Erik

+1

@SiLo真的吗?这很糟糕。你应该提交一个错误报告。 –

+19

@AbhiBeckert @SiLo这不是一个错误。 'autorelease'是一个将闭包作为参数的函数。这是一个简短的作为最后一个参数的语法的例子。 –

7

还有!这在任何地方都没有提到。

autoreleasepool { 
    Do things.... 
} 
15

仅供参考,Xcode中构建完整代码如下:

autoreleasepool({() ->() in 
    // code    
}) 

猜测括号标识功能关闭。

+3

不确定为什么有人反对这个评论,因为他指出,尽管swift1.2需要将代码封装在闭包中 – bolnad

相关问题