我们知道 NSOperationQueue 可以调度 NSOpertion 间的依赖,@H_301_1@
虽然可以为 NSOperation 增加 Depends,@H_301_1@
让你可以直接判断依赖关系是否成立。@H_301_1@
框架这么设计主要是考虑通用性,@H_301_1@
Operation 执行的成功与否是业务相关的。@H_301_1@
但是在实际应用中,只有 Opration 依赖的所有操作都执行成功了,@H_301_1@
当前的 Operation 执行才有意义。@H_301_1@
==============================================================@H_301_1@
那么如何才能显式的达到这样的目标呢?@H_301_1@
我们可以从 NSOperation 继承下来,对其进行扩展。@H_301_1@
在成员变量中增加一个 NSMutableArray,@H_301_1@
同时在成员变量中也增加一个 NSNumber(初始值为 NO),@H_301_1@
并重写 addDepends,@H_301_1@
假设我们继承下来的类叫:XXOperation,@H_301_1@
XXOperation 的数组中存的是:XXOperation。@H_301_1@
在 addDepends 时,首先调用基类方法,然后向数组中添加我们的XXOperation。@H_301_1@
当 XXOperation 执行成功时,将 NSNumber 置为 YES。@H_301_1@
当有所依赖的 XXOperation start 时,判断所有的依赖项是否执行成功。@H_301_1@
Code Sample:@H_301_1@
@interface XXOperation : NSOperation {@H_301_1@
NSMutableArray *_xxDepends;@H_301_1@
NSNumber *_exeResult;@H_301_1@
}@H_301_1@
@property (nonautomic,retain)NSMutableArray *xxDepends;@H_301_1@
301_1@
@end@H_301_1@