我需要知道我是否正確。應用程序運行正常,但我不確定我是否正確地獲取生命週期(泄漏?)。塊和ARC的內存管理,泄漏?
注意:儀器看不到泄漏。
的方法AAA級代碼:一些A級:
- (void) aaa {
NSString *path = ...something...;
NSBlockOperation* theOp = [NSBlockOperation blockOperationWithBlock: ^{
// using path
[self somethingElseWith:path];
}];
[self.aQueue addOperation:theOp];
}
所以我創建了一個塊穿上aQueue(NSOperationQueue *)。目標是從主線程卸載長時間運行的somethingElseWith:方法,以便GUI繼續響應。
塊內我引用了將在aaa:方法結束時超出範圍的本地var「路徑」。
如果我正確讀取了文檔,該塊將在'路徑'上執行保留。但是ARC是否會隱式地在這個塊的末尾插入一個版本?將是合乎邏輯的,很好。
或者我應該聲明'path'爲__block並將其分配給nil在我的塊的結尾? (手動...)
不知道我明白如何在這種情況下使用__weak。
謝謝。問題:如果沒有使用ARC,那麼'path'變量是否也可以?或者在塊的末尾需要'[path release]'? – malaba 2012-02-23 10:12:07
@malaba在有或沒有ARC的情況下,路徑變量都很好,因爲塊會爲你保留路徑並在塊被釋放/超出範圍時釋放它。 – Joe 2012-02-23 14:08:15