【多线程-第二天-NSOperationQueue的线程间通信-以及第二天内容的复习 Objective-C语言】

一、NSOperationQueue

1.当我们不使用队列的时候,我们可以直接调用操作的start方法,它不会开线程,

当我们使用队列的时候,我们把操作放到队列中来,系统会自动的帮我们创建线程,去执行操作,

把操作添加到队列,有两个方法,

1)- (void)addOperation:(NSOperation *)op;

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

2.线程间通信

【多线程-第二天-NSOperationQueue的线程间通信-以及第二天内容的复习 Objective-C语言】_第1张图片

当下载完成的时候,当异步操作完成的时候,我们想回到主线程,刚刚是不是还做不到呢,下边,我们要做一下这个事情,我们模拟一下,最早我们做的那个异步下载,我们看一下,怎么去回到主线程上来,我们先新建一个项目,

【多线程-第二天-NSOperationQueue的线程间通信-以及第二天内容的复习 Objective-C语言】_第2张图片

Name:15-线程间通信

好,我们要模拟线程间通信,首先,得模拟一个异步,得创建一个操作,操作里面去执行下载图片,

把草组添加到队列中来,这个队列怎么来用,以后,我们习惯性的,就会创建一个全局队列,因为,全局队列一旦有了,以后再往队列里边添加操作的时候,就会比较简单了,而这段代码是固定的啊,

@property(nonatomic,strong)NSOperationQueue *queue;

有了它了之后,用之前,先得去初始化,写一个懒加载,

// 懒加载

- (NSOperationQueue *)queue{

if(_queue == nil){

_queue = [[NSOperationQueue alloc] init];

}

return _queue;

}

我们直接在viewDidLoad里边去演示了,

- (void)viewDidLoad{

你可能感兴趣的:(Objective-C,objective-c,ios)