我有一些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