首页 > 代码库 > IOS中的多线程【二】— NSOperation和NSOperationQueue
IOS中的多线程【二】— NSOperation和NSOperationQueue
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]; |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。