私は NSProgress を試していますが、バックグラウンド スレッドで単純なループを見つけると、メモリが急速に増加します。
class Worker {
var progress:NSProgress?
func doWork() {
let numIterations:Int64 = 100000
let delay:UInt32 = 100
let progressObj = NSProgress(totalUnitCount: numIterations)
// progressObj.cancellable = true
progress = progressObj
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
progressObj.becomeCurrentWithPendingUnitCount(numIterations)
for i in 0...numIterations {
progressObj.completedUnitCount = i
usleep(delay)
}
progressObj.resignCurrent()
}
}
}
これを Allocations インストルメントでプロファイリングすると、メモリが 30 秒間で約 20 MB に増加することがわかります (ループのサイズを大きくすると、さらに増加します)。割り当てはすべて に起因し_NSProgressFraction
ます。
私が見落としている明らかな何かがありますか、それともこれは NSProgress のバグですか?