什么相当于Swift中的@autoreleasepool?

时间:2014-06-10 22:44:52

标签: automatic-ref-counting swift nsautoreleasepool

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

4 个答案:

答案 0 :(得分:117)

WWDC 2014 session video编号418“使用乐器改善应用程序”中对此进行了详细说明,您也可以将其下载为PDF格式。

但简而言之,语法是:

autoreleasepool {
  /* code */ 
}

答案 1 :(得分:16)

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

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

猜猜括号标识函数闭包。

答案 2 :(得分:7)

有!它在任何地方都没有真正提到过。

autoreleasepool {
    Do things....
}

答案 3 :(得分:0)

我在代码中使用了这种结构。此功能是根据视频URL创建缩略图。

func getThumbnailImage(forUrl url: URL) -> UIImage? {
    return autoreleasepool{ () -> UIImage in
        let asset: AVAsset = AVAsset(url: url)
        let imageGenerator = AVAssetImageGenerator(asset: asset)
        var thumbnailImage: CGImage?
        do {
            thumbnailImage = try imageGenerator.copyCGImage(at: CMTimeMake(value: 1, timescale: 60) , actualTime: nil)
            return UIImage(cgImage: thumbnailImage!)
        } catch let error {
            print(error)
        }
        return UIImage(cgImage: thumbnailImage!)
    }
}