加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iosNSOperation依赖关系

发布时间:2020-12-13 22:29:03 所属栏目:百科 来源:网络整理
导读:NSOperation 依赖关系,就像你和女友,互相需要对方一样。非常有意思。 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - ( void )viewDidLoad { [ super viewDidLoad ]; // 操作依赖 // 处理图片的耗时操作

NSOperation 依赖关系,就像你和女友,互相需要对方一样。非常有意思。

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

[super viewDidLoad];


//操作依赖

//处理图片的耗时操作在子线程中执行

NSBlockOperation *blockOp = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"blockOp 下载图片 thread = %@",[NSThread currentThread]);

}];

NSBlockOperation *blockOp1 = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"blockOp1 给图片添加水印 thread = %@",[NSThread currentThread]);

}];

NSBlockOperation *blockOp2 = [NSBlockOperation blockOperationWithBlock:^{

[NSThread sleepForTimeInterval:2.0];

NSLog(@"blockOp2 保存图片 thread = %@",[NSThread currentThread]);

}];

//blockOp1添加依赖关系,使blockOp1blcokOp执行结束后执行

[blockOp1 addDependency:blockOp];//也就是下载结束之后再给图片添加水印,然后保存图片。一种依赖关系

[blockOp2 addDependency:blockOp1];

//创建队列(把上面要干的事情丢到队列中同时执行--有点类似GCD中的异步,并发,开启了多个线程)

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

//添加到队列

[queue addOperation:blockOp];

[queue addOperation:blockOp1];

[queue addOperation:blockOp2];

//设置队列中操作同时执行的最大数目,也就是说当前队列中呢最多由几个线程在同时执行,一般情况下允许最大的并发数2或者3

[queue setMaxConcurrentOperationCount:3];

//

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

NSBlockOperation *blockOpp = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"blockOpp i = %d thread = %@",i,[NSThread currentThread]);

}];

[queue addOperation:blockOpp];

}

//刷新UI的操作依赖关系必须在主线程中执行

NSBlockOperation *blocOpMain = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"blockOpMain 刷新UI 显示图片,thread = %@",[NSThread currentThread]);

}];

//这两个操作的依赖关系,跨队列

[blocOpMain addDependency:blockOp2];

//主队列

[[NSOperationQueue mainQueue]addOperation:blocOpMain];

}

@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读