2 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
autoreleasepool
返回autorelease
對(duì)象(由Objective-C代碼或使用Cocoa類(lèi)創(chuàng)建)時(shí),模式在Swift中使用。autorelease
Swift中的模式與Objective-C中的模式非常相似。例如,考慮一下你的方法的Swift再現(xiàn)(實(shí)例化NSImage
/ UIImage
對(duì)象):
func useManyImages() { let filename = pathForResourceInBundle for _ in 0 ..< 5 { autoreleasepool { for _ in 0 ..< 1000 { let image = NSImage(contentsOfFile: filename) } } }}
如果您在Instruments中運(yùn)行它,您將看到如下的分配圖:
但是如果你在沒(méi)有自動(dòng)釋放池的情況下這樣做,你會(huì)發(fā)現(xiàn)峰值內(nèi)存使用率更高:
在autoreleasepool
允許時(shí)自動(dòng)釋放對(duì)象斯威夫特被釋放你明確地管理,就像你能在Objective-C。
注意:處理Swift本機(jī)對(duì)象時(shí),通常不會(huì)收到自動(dòng)釋放對(duì)象。這就是為什么演示文稿提到了在“使用Objective-C”時(shí)只需要這個(gè)的警告,盡管我希望Apple在這一點(diǎn)上更清楚。但是如果你正在處理Objective-C對(duì)象(包括Cocoa類(lèi)),它們可能是自動(dòng)釋放對(duì)象,在這種情況下,Swift對(duì)Objective-C @autoreleasepool
模式的再現(xiàn)仍然很有用。
- 2 回答
- 0 關(guān)注
- 2330 瀏覽
添加回答
舉報(bào)