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