iOS中的RunLoop

 

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

iOS中的RunLoop

上一篇:android.support.v4.app.NotificationCompat引用包


下一篇:JS 骚操作整理