我有一个基于tabbar的应用程序,有三个选项卡,其中一个是运行时钟。要为时钟UI设置动画,我使用每秒触发一次的NSTimer。如果用户将切换进出各种选项卡,我该如何管理此计时器?
scheduledTimerWithTimeInterval
创建和安排计时器,并在应用关闭时让它死掉吗?或者我应该在时钟选项卡的根视图控制器中为计时器维护一个实例变量,并使用addTimer:forMode:
和invalidate
? viewWillAppear
和viewWillDisappear
方法用于时钟选项卡的根视图控制器?在其他地方?非常感谢您的智慧!
答案 0 :(得分:2)
@samsam说了什么,加上这个:设置为1秒的计时器不能保证在第二秒精确射击。它将被安排在每秒一次的可用处理时间。在许多情况下,它会非常接近计划的确切时间,但很少会在那时完成,如果应用程序忙于其他事情,它可能会相当多。
如果你的时钟实际上每秒钟打一次非常关键(如果不是那么它就不会是一个时钟),你希望你的计时器比这更频繁地点火,并在它时更新UI注意到它正在观看的时间价值已发生变化。
答案 1 :(得分:1)
我会做以下事情:
如果您的时钟视图出现 - >将Clock设置为当前时间,然后启动一个每秒更新时钟的定时器:
clockRefreshTimer = [NSTimer scheduledTimerWithTimeInterval: 1 target: self selector:@selector(updateClockView) userInfo:nil repeats:YES]
如果时钟视图即将消失,则定时器
无效[clockRefreshTimer invalidate];
这样您就不会进行不必要的更新。
希望我能帮到他,山姆