码迷,mamicode.com
首页 > 其他好文 > 详细

NSOperation - 02

时间:2015-07-27 11:11:25      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:nsoperation   ios   queue   依赖   

NSOperationQueue作用:

NSOperation可以调用start方法来执行任务,但默认是同步执行的;如果将NSOperation添加到NSOperationQueue中,系统会自动异步执行NSOperation中的操作;


添加操作到NSOperationQueue中:

- (void)addOperation:(NSOperation *)p;

- (void)addOperationWithBlock:(void (^)(void))block;


最大并发数: 同时执行任务的最大数;开启新线程的最大数;


队列的取消、暂停、恢复:

取消操作:

- (void)cancelAllOperation;     (队列方法,全部取消)

- (void)cancle;                 (操作方法,取消单个操作)

暂停和恢复:

- (void)setSuspended(BOOL)b;     //YES代表暂停队列,NO代表恢复队列;

使用场景:在一个UITableView中,有加载数据图片的时候,当你滑动表单时,可以暂停队列任务,当你停止滑动,你就可以恢复队列任务;

操作优先级:

1,设置NSOperationqueue中的优先级,可以改变操作的执行优先级;

- (NSOperationQueuePriority)queuePriority;

- (void)setQueuePriority:(NSOperationQueuePriority)p;

2,优先级的取值;

(1)NSOperationQueuePriorityVeryLow = -8L;

(2)NSOperationQueuePriorityLow = -4L;

(3)NSOperationQueuePriorityNormal = 0;

(4)NSOperationQueuePriorityHigh = 4;

(5)NSOperationQueuePriorityVeryHigh = 8;


操作依赖:

1NSOperation之间可以设置依赖来保证执行顺序;

比如一定要让操作A执行完后,才能执行操作B,可以这么写

[operationB addDependency:operationA];  //操作B依赖于操作A

2,可以不同queueNSOperation之间创建依赖关系;

技术分享

监听:

- (void)opeationListen

{

    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{

        for (int i = 0; i<10; i++) {

            NSLog(@"NSBlockOperation------下载图片---%@", [NSThread currentThread]);

        }

    }];

    operation.completionBlock = ^{

        // ...下载完图片后想做事情

        NSLog(@"NSBlockOperation------下载图片完毕---%@", [NSThread currentThread]);

    };

    

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

    [queue addOperation:operation];

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

NSOperation - 02

标签:nsoperation   ios   queue   依赖   

原文地址:http://blog.csdn.net/hepburn_/article/details/47080625

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!