YSSimpleOperation
为控制任务执行顺序提供简单操作的简单操作...
简介
为OperationQueue管理的操作简单设计。控制任务的执行方式类似'dispatch_group_t',并简单地顺序执行异步任务。
用法
- 依赖任务
NSMutableArray *list = [NSMutableArray array];
for (NSString *str in @[@"a", @"b"]) {
NSOperation *operation = [self createOperationWithSymbol:str queueType:YSQueue_Concurrent depentOperationList:nil];
[list addObject:operation];
}
for (NSString *str in @[@"A"]) {
[self createOperationWithSymbol:str queueType:YSQueue_Serial depentOperationList:[list copy]];
}
- (NSOperation *)createOperationWithSymbol:(NSString *)symbol queueType:(YSQueueType)queuType depentOperationList:(NSArray *)list {
NSOperation *operation = [self.manager addOperationInQueueType:queuType inQuality:NSQualityOfServiceDefault dependencyOperations:list actionBlock:^(YSStopActionBlock stopAction) {
/*
simulate task
*/
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSLog(@"start loading -> %@...", symbol);
sleep(5);
NSLog(@"end loading -> %@...", symbol);
stopAction(false);
});
} cancelBlock:^{
NSLog(@"%@ cancel...", symbol);
} finshBlock:^{
NSLog(@"%@ finsh...", symbol);
}];
return operation;
}
- 串行任务
for (NSString *str in @[@"a", @"b"]) {
[self createOperationWithSymbol:str queueType:YSQueue_Serial depentOperationList:nil];
}
// like above
...
安装
- cocopods
在Podfile中添加它
pod 'YSSimpleOperation', '~>1.0.0'
然后运行
pod install
- sourceCode
在目录 YSSimpleOperation
YSActionOperation.h
YSActionOperation.m
YSOperationManager.h
YSOperationManager.m