一: NSRunLoop 简介
NSRunLoop 从字面上来讲就是一个 运行循环。Run loops是线程相关的的基础框架的一部分。一个run loop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。其实内部就是do-while循环,这个循环内部不断地处理各种任务(比如Source,Timer,Observer)。使用run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。这里主要介绍一下它在实际开发过程中的应用
二: 应用场景
Demo地址。 主要分三个模块来进行介绍。 第一个模块ViewController 介绍在多线程中使用runloop, runloop的嵌套,runloop的工作监听。 第二个模块: 在ExpriViewController 中,介绍使用runloop 实现常驻线程。 实现runloop 对用户输入(按压屏幕,按钮,滑动textView等的)的监听。第三个模块: 使用runloop 对部分的 大图加载的过程的优化。 正如demo 中所说这个BigImageCellViewController主要是为了对比使用 nsrunloop 来分批加载cell 并且只在滑动停止的情况下加载图片实际上: 在真实的应用中 列表中都是缩略图 点击小图查看大图 这是在移动端经常优化的方法。在一些大图 加载的时候 我们采取加载一张卸载一张的策略 也就是用户看到的始终只有一个大图 也不需要使用runloop这样去做。 提供了这样一种思路而已。
三: 注意事项
实验过程中注意 对资源的回收, timer的invalidate 等的不然会造成内存泄漏等的。