一、NSOperationQueue 1.当我们不使用队列的时候,我们可以直接调用操作的start方法,它不会开线程, 当我们使用队列的时候,我们把操作放到队列中来,系统会自动的帮我们创建线程,去执行操作, 把操作添加到队列,有两个方法, 1)- (void)addOperation:(NSOperation *)op; 2)- (void)addOperationWithBlock:^(void)block; 2.线程间通信 当下载完成的时候,当异步操作完成的时候,我们想回到主线程,刚刚是不是还做不到呢,下边,我们要做一下这个事情,我们模拟一下,最早我们做的那个异步下载,我们看一下,怎么去回到主线程上来,我们先新建一个项目, Name:15-线程间通信 好,我们要模拟线程间通信,首先,得模拟一个异步,得创建一个操作,操作里面去执行下载图片, 把草组添加到队列中来,这个队列怎么来用,以后,我们习惯性的,就会创建一个全局队列,因为,全局队列一旦有了,以后再往队列里边添加操作的时候,就会比较简单了,而这段代码是固定的啊, @property(nonatomic,strong)NSOperationQueue *queue; 有了它了之后,用之前,先得去初始化,写一个懒加载, // 懒加载 - (NSOperationQueue *)queue{ if(_queue == nil){ _queue = [[NSOperationQueue alloc] init]; } return _queue; } 我们直接在viewDidLoad里边去演示了, - (void)viewDidLoad{