保持界面响应性:使用定时器优化应用
在应用开发中,保持用户界面的响应性至关重要。本文将详细介绍如何使用定时器( NSTimer )来实现这一目标,并通过一个具体的示例展示如何优化应用,使其在进行大量计算时仍能保持流畅。
1. 定时器概述
在Cocoa和Cocoa Touch共享的Foundation框架中, NSTimer 类可用于按周期性间隔调用特定对象的方法。定时器的工作流程如下:
1. 创建定时器。
2. 将定时器安排到运行循环(run loop)中。
3. 定时器在指定间隔后触发。
4. 如果定时器设置为重复,则会在每次指定间隔过去后重复调用目标方法。
需要注意的是,非重复定时器现在不太常用,因为可以通过调用 performSelector:withObject:afterDelay: 方法更轻松地实现相同效果。
定时器并不保证精确地在指定间隔触发。由于运行循环的工作方式,无法保证定时器触发的精确时刻。定时器会在指定时间过去后的第一次运行循环中触发,这意味着定时器不会在指定间隔之前触发,但可能会在之后触发。通常,实际间隔仅比指定间隔长几毫秒,但不能依赖于此。如果主循环上运行了一个长时间运行的方法,运行循环将等到该方法完成后才能触发已安排的定时器,这可能会在请求的间隔之后很长时间才发生。
定时器在其运行循环所在的线程上触发。在大多数情况下,除非另有特定意图,定时器将在主线程上创建,并且其触发的方法也将在主线程上执行。因此,如果在定时器调用的方法中执行过多操作,会导致用户界面卡顿。为了保持界面响应性,需要将工
超级会员免费看
订阅专栏 解锁全文
1145

被折叠的 条评论
为什么被折叠?



