2009-08-31 69 views

回答

3

不,不需要表示調用已完成。 NSOperationQueue知道當其isFinished屬性設置爲YES時,操作完成。當操作的-main方法返回時,默認情況下會發生這種情況。

NSInvocationOperation的-main方法,對於所有意圖和目的,只是調用其NSInvocation並返回,所以它的isFinished標誌應在調用完成後立即設置爲YES。

+0

我的任務可能需要7秒才能完成(將圖像寫入相機膠捲),所以我不希望太多這樣的內容同時運行,因爲它會使內存過載。在完成圖像保存之前,我應該怎麼做才能使操作無法繼續。圖像保存操作有回調指示圖像已完成保存。 – Boon 2009-08-31 22:12:07

+0

只需使用[theQueue setMaxConcurrentOperationCount:1],一次只能完成一個。 – 2009-09-01 12:01:46

0

這是自動的NSInvocationOperation。你已經很好走了。

如果您需要告訴應用的其他部分操作已完成,您可以使用通知。確保通知進入正確的線程。在iPhone上,我將它們發送到主線程,因爲我經常更改UI以響應通知,並且所有UI的內容都必須在主線程上發生。

[self performSelectorOnMainThread:@selector(postOpDoneNote) withObject:nil waitUntilDone:NO]; 

-(void) postOpDoneNote 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"someOpDone" object:self]; 
}