菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
385
0

IOS中的多线程【二】— NSOperation和NSOperationQueue

原创
05/13 14:22
阅读数 663676

标签:com   class   blog   div   code   string   tab   log   ble   cti   line   

NSOperationQueue是一套基于Objective-c语言的API。

GCD与NSOperationQueue的优缺点:

NSOperationQueue:比较安全

GCD:没有NSOperationQueue安全,但使用起来简单,快速,还提供了一些操控底层的方法。实际开发中还是以GCD为主。

NSOperationQueue实现多线程流程

1.定义一个任务队列。

2.定义一个任务。

3.把任务添加到队列中。一旦任务被添加到队列中,任务会马上被调度执行。

任务队列(NSOperationQueue)只有主队列和自定义队列两种

NSOperationQueue的一个实例对象就是一个自定义队列,主队列通过[NSOperationQueue mainQueue]获取。

NSOperationQueue实现的自定义队列都是并发的

任务(NSOperation)

NSOperation是一个抽象类,定义一个任务对象只能继承并重写它,苹果也提供了两个它的子类NSInvocationOperation、NSBlockOperation,我们一般用这个子类。


NSOperationQueue实现的自定义队列都是并行,下面是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//1.定义4个队列
NSBlockOperation * operation1 = [NSBlockOperation blockOperationWithBlock:^
                                {
                                    NSLog(@"1.下载图片");
                                }];
NSBlockOperation * operation2 = [NSBlockOperation blockOperationWithBlock:^
                                 {
                                     NSLog(@"2.修饰图片");
                                 }];
NSBlockOperation * operation3 = [NSBlockOperation blockOperationWithBlock:^
                                 {
                                     NSLog(@"3.保存图片");
                                 }];
NSBlockOperation * operation4 = [NSBlockOperation blockOperationWithBlock:^
                                 {
                                     NSLog(@"4.显示图片");
                                 }];
//2.设置依赖关系,保证顺序执行。
[operation2 addDependency:operation1];
[operation3 addDependency:operation2];
[operation4 addDependency:operation3];
//3.将任务添加到队列中去,并开始执行。
[self.queue addOperation:operation1];
[self.queue addOperation:operation2];
[self.queue addOperation:operation3];
//更新UI操作在主队列中执行,依赖关系是可以跨队列的。
[[NSOperationQueue mainQueue] addOperation:operation4];

 

IOS中的多线程【二】— NSOperation和NSOperationQueue,布布扣,bubuko.com

IOS中的多线程【二】— NSOperation和NSOperationQueue

发表评论

0/200
385 点赞
0 评论
收藏
为你推荐 换一批