在Swift中,我注意到没有@autoreleasepool{}
构造,尽管Swift确实使用了ARC。在Swift中管理autoreleasepool的正确方法是什么,还是因某种原因被删除了?
答案 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!)
}
}