HWOperationsKit
HWOperationsKit对WWDC 2015 Advanced NSOperations进行了简单封装,以便于能够简单高效的使用NSOperation。
何时使用
- 多个任务都完成后再处理某个任务。可以用
dispatch_group_t
,但代码比较繁琐。 - 多个任务之间产生依赖,特别的异步任务(如网络请求),如果使用block嵌套,会陷入
回调地狱
。而使用dispatch_group_t
加dispatch_semaphore_t
可以实现异步任务依赖,但是代码很不美观,而且相关复用率低。 - 有一系列链式任务,顺序执行,每个任务执行完成会产生错误和数据,需要传递给下一个任务,如何处理?
以上几种情况使用NSOperation可以很好的解决。该框架对 NSOperation
和 NSOperationQueue
进行了简单封装,使用更加简单。
如何使用
HWOperation
该类继承自NSOperation,使用时可以继承自HWOperation。
如何开始和结束operation?
子类实现 - (void)execute
方法,在方法中可以执行同步/异步代码,当任务完成后,必须调用相关的finish或者cancel方法。
#pragma mark - finish
/**
* 子类必须在合适的实际调用一下几个`finish`方法来使op finish
* 最终调用`- (void)finishWithErrors:(nullable NSArray <NSError *> *)errors`
*/
- (void)finish NS_REQUIRES_SUPER;
/**
* 子类可重写该方法,但必须调用super
*/
- (void)finishWithErrors:(nullable NSArray <NSError *> *)errors NS_REQUIRES_SUPER;
#pragma mark - cancel
- (void)cancel NS_REQUIRES_SUPER;
- (void)cancelWithErrors:(nullable NSArray <NSError *> *)errors NS_REQUIRES_SUPER;
如何监听operation各种状态?
HWOperation
可添加观察者:HWBlockObserver
,监听op即将加入operation Queue,开始,产生新的op,结束等几种状态。
或者使用 NSOperation
的分类,参见 NSOperation+HWBlock.h
HWOperation的派生类HWChainOperation、HWGroupOperation
HWChainOperation
会依次(one-by-one)执行一组op,不用设置依赖,并且每个op完成后,可以传递数据到下一个op。
HWGroupOperation
会初始化一组op,异步执行,顺序不定。
HWOperationQueue
用法与NSOperationQueue相同
+ (nonnull instancetype)globalQueue
是一个全局单例queue,通常情况下operation可以直接加入到queue中。
HWOperation
中有方法 - (nonnull instancetype)runInGlobalQueue
可直接加入queue。
示例
要运行示例项目,请克隆仓库,然后首先从Example目录运行pod install
。
HWViewController.m
中提供了几种简单的使用。
要求
iOS8.0+
安装
HWOperationsKit可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中
pod 'HWOperationsKit'
作者
HeathWang, [email protected]
许可协议
HWOperationsKit遵循MIT许可协议。更多请见LICENSE文件。