Daily Archives: 2018年11月24日

利用RunLoop来实现线程的保活,并封装子线程任务执行

1、基本思路

1.1、创建一个Helper类对NSThread类进行封装;
1.2、Helper类内部实现线程的创建、执行、销毁等一系列操作;
1.3、核心点在于RunLoop的循环执行,调用runMode:beforeDate方法让线程处于休眠状态,再通过while循环,使runloop执行结束后再次开启,循环条件外部控制,这样就能达到控制runloop的生命周期,从而保全线程的生命周期;
1.4、Helper类在销毁时,要及时更改runloop的循环条件,并唤醒或停止子线程中的runloop,runloop停止后线程结束,否则两者会一直存在内存当中,runloop因为没有及时被唤醒而一直处于休眠状态,线程因为runloop没有停止而无法释放;
1.5、Helper在使用NSThread创建子线程时也要注意循环引用的问题;

2、代码示例[……]

继续阅读