我有一些iPhone SDK 4.0代碼初始化NSOperationQueue
,然後添加三個類(ClassA
,ClassB
和ClassC
)一個接一個地運行。 ClassA
,ClassB
和ClassC
都是NSOperation
的子類。從NSOperation內取消NSOperationQueue
相關代碼包含在下面。
ClassA *classA = [[ClassA alloc] init];
ClassB *classB = [[ClassB alloc] init];
ClassC *classC = [[ClassC alloc] init];
[classB addDependency:classA];
[classC addDependency:classB];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:classA];
[queue addOperation:classB];
[queue addOperation:classC];
[classA release];
[classB release];
[classC release];
[queue release];
的原因依賴是因爲如果classA
成功地完成其操作classB
應該只運行。同樣,classC
只應在classB
成功完成時運行。
目前我很難弄清楚如何防止,例如,如果classA
未成功完成,classB
就不會運行。繼續這個例子,我在想從classA
以某種方式喚起[NSOperationQueue cancelAllOperations]
,但我不知道如何從classA
(這是一個NSOperation
子類)處理父NSOperationQueue
。這只是我最初的想法,所以我會接受任何其他更好的建議來實現相同的結果!
每個類中都有條件代碼,用於確定它們是否已正確完成 - 目前它們只是NSLogging「Success」或「Fail」以用於調試目的。在一個完美的世界中,我只希望能夠用一些代碼來替代每個類中的NSLog(@"Fail")
語句,這些代碼將停止運行NSOperationQueue中的所有其他類。
任何建議將是最受歡迎的(和讚賞)。
你是什麼意思「未成功完成」。操作是否遇到錯誤或操作未完成? – falconcreek 2010-07-05 03:57:25