Skip to content

Latest commit

 

History

History
50 lines (23 loc) · 1.11 KB

8、线程之间的通讯.md

File metadata and controls

50 lines (23 loc) · 1.11 KB

线程之间的通讯

线程间通信的体现

  • 1、一个线程传递数据给另一个线程
  • 2、在一个线程中执行完特定任务后,转到另一个线程继续执行任务

1、NSThread 可以先将自己的当前线程对象注册到某个全局的对象中去,这样相互之间就可以获取对方的线程对象,然后就可以使用下面的方法进行线程间的通信了,由于主线程比较特殊,所以框架直接提供了在主线程执行的方法

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait NS_AVAILABLE(10_5, 2_0);

2、GCD

//开启一个全局队列的子线程
dispatch_async(dispatch_get_global_queue(0, 0), ^{
	//1. 开始请求数据
	//...
	// 2. 数据请求完毕
	//我们知道UI的更新必须在主线程操作,所以我们要从子线程回调到主线程
	dispatch_async(dispatch_get_main_queue(), ^{

		/我已经回到主线程更新
	});

});