1.关键点是在主线程的runloop中加入一个machport
2.在子线程中,1)将要发出的通知加入一个数组中,然后通过主线程中的machport发出消息
2)在主线程中接收port来的消息,但其内部其实是访问主线程生成的数组(该数组在子线程中也能进行操作,怪不得要加锁)即可。
3.注意在主线程中处理通知的要区分出来当前线程(通知的监听者还能处理不同线程的)
4.NSMachPort是线程间通信的一种方式
注:
- (void)handlePortMessage:(NSPortMessage *)message;
参考链接:https://www.bbsmax.com/A/x9J2DXQed6/
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html#//apple_ref/doc/uid/20001289-CEGJFDFG