处理 NSOpertion 间依赖关系的一种方式

前端之家收集整理的这篇文章主要介绍了处理 NSOpertion 间依赖关系的一种方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们知道 NSOperationQueue 可以调度 NSOpertion 间的依赖,@H_301_1@

虽然可以为 NSOperation 增加 Depends,@H_301_1@

但是框架并没有提供方法,@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@

以上只是一个想法,并没有在实际产品代码中应用。@H_301_1@

猜你在找的设计模式相关文章