runLoop的应用

runloop的应用:

1.NSTimer

2.ImageView显示

3.PerformSelector

4.常驻线程

5.自动释放池

一个简单的例子,在子线程中完成一个任务后,子线程就处于消亡。现在要求子线程完成任务后,再重新唤醒子线程。解决办法:考虑使用runloop,使任务永远不能完成,那么子线程就不会销毁。


runLoop的应用_第1张图片
1.两个按钮,一个创建子线程,一个重新启动子线程

所以在创建子线程的时候,在任务中添加一个runloop(必须有个timer或者source,runloop才会执行)。

runLoop的应用_第2张图片
2.添加runloop

这样,就可以重新在原来的子线程中开启任务了。

总结下:

1.什么是 runloop

运行循环,跑圈。内部就是 do-while循环,在这个循环内部不断的处理各种任务。

2. 一个线程对应一个runloop,主线程的runloop默认已经启动。子线程的需要手动启动(run)

3. runloop只能选择一个mode启动,如果当前的mode中没有任何的source和timer,那么直接退出runloop。

4.自动释放池什么时候释放?

当runloop 即将睡眠的时候销毁之前的释放池,重新创建一个新的

5.observer 可以监听runloop的状态

6.runloop的使用场景:

1.开启一个常驻线程,让一个子线程不进入消亡状态,等待其他线程发来消息,处理其他事件。

1.1.在子线程中开启一个定时器。

1.2在子线程中进行一些长期监控

2.可以控制定时器在特定模式下执行。

3.可以添加observer监听runloop的状态,比如监听点击事件的处理(在所有点击事件之前做一些事情)

你可能感兴趣的:(runLoop的应用)