2
在我的應用程序中,通過循環遍歷我想對其進行某些操作的文件數組,將併發操作添加到我的NSOperationQeueu。我想知道當隊列爲空,所有的操作都完成了,所以我使用(簡稱縮小版本):如何確保NSOperationQueue真的是空的
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if (object == myLocalModeController.myFileobjectsQueue && [keyPath isEqualToString:@"operations"]) {
if ([myLocalModeController.myFileobjectsQueue.operations count] == 0) {
NSLog(@"Local: Fileobject creation has completed");
}
}
}
我的問題是,有時操作是如此輕巧,他們立即完成,而隊列仍然被添加到。這導致頻繁發生的情況是隊列中的項目數爲零,但操作尚未完成。但是,根據我當前的設置,該程序認爲自從'[myLocalModeController.myFileobjectsQueue.operations count] == 0'以來,操作已經完成。有關如何確保隊列真正完成並且所有操作都已結束的任何建議?謝謝。歡呼聲中,特龍
很好的答案。或者Trond可以添加全局的「仍然設置」標誌,或者像「配置操作」這樣的其他屬性。 – 2013-02-22 21:40:20