NSBlockOperation线程间通信

来源:互联网 发布:最完美的丁丁长度 知乎 编辑:程序博客网 时间:2024/06/07 01:27
// 常规书写方式- (void)OPDemo{    // 1.创建队列 : 默认是并发的    NSOperationQueue *queue = [[NSOperationQueue alloc] init];    // 2.创建操作 : 默认是异步的    NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{        NSLog(@"%@",[NSThread currentThread]);    }];    // 3.把操作添加到队列    [queue addOperation:op];}
// 简写- (void)OPDemo2{    // 定义全局的并发队列    NSOperationQueue *queue = [[NSOperationQueue alloc] init];;    [queue addOperationWithBlock:^{        NSLog(@"%@",[NSThread currentThread]);    }];}
// 现实生活中的实际写法// 线程间的通信 : 开发中常用的代码@implementation ViewController {    // 定义全局的并发队列    NSOperationQueue *_queue;}- (void)viewDidLoad {    [super viewDidLoad];      _queue = [[NSOperationQueue alloc] init];}- (void)OPDemo{   // 队列默认是全局并发的队列,理所当然在子线程执行,所以耗时操作就放在这里执行    [_queue addOperationWithBlock:^{        NSLog(@"正在下载... %@",[NSThread currentThread]);        // 如果下载完成之后,回到主线程更新UI        [[NSOperationQueue mainQueue] addOperationWithBlock:^{            NSLog(@"正在更新UI... %@",[NSThread currentThread]);        }];    }];}
0 0