iOS中的RunLoop
使用场景
1.保持线程的存活,而不是线性的执行完任务就退出了
<1>不开启RunLoop的线程
<2>开启RunLoop的线程
(1)实验用self来持有子线程
(2)实验让线程不结束任务导致进入死亡状态]
(3)Event Loop模式
(4)初步尝试使用RunLoop
(5)初体验产生的疑问
①为什么总是要把RunLoop和线程放在一起来讲?
②如何创建RunLoop?
③线程默认不开启RunLoop,为什么我们的App或者说主线程却可以一直运行而不会结束?
④RunLoop能正常运行的条件是什么?
⑤除了[runLoop run]还有那些方法启动RunLoop?
(6)初体验结论
2.保持线程的存活后,让线程在我们需要的时候响应消息。
3.让线程定时执行某任务(Timer)
<1>初识NSTimer遇到的坑
<2>使用NSTimer遇到的坑
<3>NSTimer导致的ViewController无法释放问题
<4>performSelecter:afterDelay:
4.监听Observer达到一些目的
关于RunLoop的释放问题(RunLoop带autoreleasepool的正确写法)
<1>分析
<2>需要用while循环控制的RunLoop
<3>不需要用while循环控制的RunLoop
<4>关于主线程中autoreleasepool的题外话
关于子线程RunLoop切换Mode的思考
本文最大干货,子线程中模拟主线程DefaultMode与TrackingMode的切换,长代码预警
参考文档
<1>RunLoop
<2>autoreleasepool