Timer 计时器 (SwiftUI中文文档手册)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Timer 计时器 (SwiftUI中文文档手册)相关的知识,希望对你有一定的参考价值。
参考技术A 经过一定时间间隔后将触发的计时器,将指定的消息发送到目标对象。计时器与运行循环配合使用。运行循环会维护对其计时器的强引用,因此在将计时器添加到运行循环后,您不必维护自己的对计时器的强引用。
为了有效地使用计时器,您应该了解运行循环的运行方式.计时器不是实时机制。如果在长时间运行的循环调用期间或运行循环处于不监视计时器的模式时发生计时器的触发时间,则直到下一次运行循环检查计时器时,计时器才会启动。因此,计时器触发的实际时间可能要晚得多。另请参阅计时器容差。
您可以指定计时器在创建时是重复还是不重复。非重复计时器触发一次,然后自动使其自身无效,从而防止计时器再次触发。相比之下,重复计时器会触发,然后在同一运行循环上重新安排自身的时间。重复计时器始终根据计划的点火时间进行调度,而不是实际的点火时间。例如,如果定时器计划在特定时间触发,然后每5秒触发一次,则即使实际触发时间被延迟,计划的触发时间也将始终落在原始的5秒时间间隔上。如果触发时间延迟得太远,以至于超过了计划的触发时间中的一个或多个,则计时器在该时间段仅触发一次;触发后,计时器会重新安排,
在ios 7和更高版本以及macOS 10.9和更高版本中,您可以指定计时器的公差(tolerance)。计时器启动时的这种灵活性提高了系统优化的能力,以提高节电和响应速度。计时器可以在其预定的点火日期与预定的点火日期加公差之间的任何时间点火。计时器不会在计划的触发日期之前触发。对于重复计时器,下一个点火日期是根据原始点火日期计算的,而不考虑各个点火时间的公差,以避免漂移。默认值为零,这意味着不应用其他公差。系统保留对某些计时器应用少量容差的权利,而不论该tolerance属性的值如何。
作为计时器的用户,您可以确定计时器的适当公差。一般规则,对于重复计时器,将公差设置为间隔的至少10%。即使很小的容差也会对应用程序的电源使用产生重大的积极影响。系统可以强制执行公差的最大值。
您可以一次仅在一个运行循环中注册一个计时器,尽管可以将其添加到该运行循环中的多个运行循环模式中。有三种创建计时器的方法:
一旦安排在运行循环中,计时器就会以指定的时间间隔触发,直到失效为止。非重复计时器在触发后立即失效。但是,对于重复计时器,您必须通过调用其invalidate()方法自己使计时器对象无效。调用此方法要求从当前运行循环中删除计时器。因此,您应该始终invalidate()从安装计时器的同一线程中调用该方法。使计时器无效会使它立即禁用,以使其不再影响运行循环。然后,运行循环将删除该计时器(以及该计时器必须具有的强引用),方法是在invalidate()方法返回之前或稍后。一旦失效,计时器对象将无法重用。
重复触发计时器后,它将在指定的内,为最近的将来日期安排下一次触发,该日期是最近一次计划的点火日期之后计时器间隔的整数倍tolerance。如果调出执行选择器或调用所需的时间长于指定的间隔,则计时器仅安排下一次触发;否则,定时器将仅计划下一次触发。也就是说,计时器不会尝试补偿在调用指定的选择器或调用时可能发生的任何丢失的触发。
不要子类化Timer。
创建一个计时器,并在默认模式下将其安排在当前运行循环上。
创建一个计时器,并在默认模式下将其安排在当前运行循环上。
创建一个新计时器,并在默认模式下将其安排在当前运行循环上。
使用指定的时间间隔和块初始化计时器对象。
使用指定的对象和选择器初始化计时器对象。
使用指定的调用对象初始化计时器对象。
使用指定的块为指定的日期和时间间隔初始化计时器。
使用指定的对象和选择器初始化计时器。
使计时器的消息发送到其目标。
停止计时器再次触发,并请求将其从运行循环中删除。
一个布尔值,指示计时器当前是否有效。
计时器将触发的日期。
计时器的时间间隔,以秒为单位。
接收者的对象。userInfo
在计划的触发日期之后定时器可以触发的时间。
返回一个发布者,该发布者在给定的时间间隔内反复发出当前日期。
在给定的时间间隔内反复发出当前日期的发布者。
SwiftUI Timer仿短信发送倒计时(教程含源码)
QQ:3365059189
SwiftUI技术交流QQ群:518696470
以上是关于Timer 计时器 (SwiftUI中文文档手册)的主要内容,如果未能解决你的问题,请参考以下文章