iOS DeveloperiOS点点滴滴iOS开发技巧

iOS 多线程开发之NSOperation与NSOperatio

2016-01-07  本文已影响238人  samzzz

NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作.有以下主要操作方法

[opertion start];
[opertion cancel];
operation.completionBlock = ^() {  
   NSLog(@"执行完毕");  
}
可以使用它的子类有以方法
NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];
[invocationOperation start];
NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{
       
        NSLog(@"test blockOperation");
    }];
    
   [blockOperation start];
Operation 执行优先级
typedef NS_ENUM(NSInteger, NSOperationQueuePriority) {
 NSOperationQueuePriorityVeryLow = -8L,
 NSOperationQueuePriorityLow = -4L,
 NSOperationQueuePriorityNormal = 0,
 NSOperationQueuePriorityHigh = 4,
 NSOperationQueuePriorityVeryHigh = 8
};
Operation 依赖关系
[operationB addDependency:operationA];
正确
错误的依赖关系

NSOperation Queue

一个operation可以调用start方法执行(默认是同步),也可以添加到operation queue中执行(异步)。

NSOperationQueue *queue = [[NSOperationQueue alloc]init];

[queue addOperation:operation];
[queue addOperations:@[operation] waitUntilFinished:No];
[queue addOperationWithBlock:^{
           
           NSLog(@"tset");
           
       }];
队列的最大并发操作数量(

@property NSInteger maxConcurrentOperationCount;

队列中operation执行顺序

1,首先查看operation的状态是否准备好(ready)以及其依赖关系。
2,查看operation的执行优先级(NSOperationQueuePriority)。

参考文档

Operation Queues
Advanced NSOperations

上一篇 下一篇

猜你喜欢

热点阅读