如何在iOS上处理时间事件?
我正在编写一个iPad应用程序,当这一天变为星期日时我必须更改图形。
我直截了当的解决方案是检查- (void)applicationDidBecomeActive:(UIApplication *)application
或-(void)viewWillAppear:(BOOL)animated
方法,并设置一个计时器,每10分钟检查一天是否已更改为周日,应用程序处于活动状态。
是否还有另一种可能更有效的方法来处理这种情况?
在您的appliciation委托中,实现以下方法: -(void)applicationSignificantTimeChange:(UIApplication *)application
当白天更改时,或者由于任何原因(例如更改时区)在后台更改设备的时间时,将调用此方法。
另一个选择是使用你提到的相同的两种方法,“viewWillAppear:”和“applicationDidBecomeActive:”而不是每10分钟设置一个计时器,只需计算当前时间和下一个星期日之间的时间量。 取这个时间间隔并用它来设置一个定时器,该定时器将在周日的午夜准确发射。
当天发生变化时会有通知。 你可以听它并检查它是否在它发射时是星期天。
您还应该检查它是否在发布时是星期天。
这个解决方案有什么问题? 在某些地方,它是否比每10分钟更频繁地变成星期天?
你可能想要考虑的一件事是:在你的计时器开火方法中,如果时间是在23:50之后,那么更快地重新安排计时器(即大约00:00),这样你就更有可能准确地捕捉到午夜。
本章可能有用,使用某种类型的通知进行更新:
虽然我自己最终得到了您正在使用的相同解决方案,但我发现它更简单,更可靠。