我有一些 iPhone SDK 4.0 代码初始化 anNSOperationQueue
然后添加三个类(ClassA
、ClassB
和ClassC
)以一个接一个地运行。ClassA
, ClassB
, 和ClassC
都是 的子类NSOperation
。
相关代码如下。
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];
依赖的原因是因为只有在成功完成其操作classB
时才应该运行。classA
同样,classC
仅应在成功完成时运行classB
。
目前,我很难弄清楚如何防止,例如,如果没有成功完成,则无法classB
运行。classA
继续这个例子,我想以某种方式[NSOperationQueue cancelAllOperations]
从内部唤起,classA
但我不知道如何NSOperationQueue
从内部classA
(这是一个NSOperation
子类)获得对父级的处理。这只是我最初的想法,所以我愿意接受任何其他更好的建议来达到同样的结果!
每个类中都有条件代码来确定它们是否已正确完成 - 目前它们只是 NSLogging “成功”或“失败”到控制台以进行调试。在一个完美的世界中,我希望能够NSLog(@"Fail")
用一些代码替换每个类中的语句,这将阻止 NSOperationQueue 中的所有其他类运行。
任何建议都将受到欢迎(和赞赏)。