0

在我的项目中,我有 1 个需要更改值的主视图控制器,例如 UILabel 和变量。

一旦用户第一次打开应用程序,我还需要一个持续运行的计时器。

我目前拥有的是一个计时器,它每隔一段时间在 appdelegate 中调用一个函数,当它在该函数中时,我将有一个 if 语句检测何时是午夜。到了午夜,我想在主视图控制器上重置一堆值。

所以,只要用户第一次打开应用程序,我就需要再次运行这个计时器。它需要在完全关闭时运行,并且在后台运行时,比如当用户点击主页按钮并且没有关闭它时。

我的主要问题是,我应该在 appdelegate 中为此使用哪些功能?现在看来,只有在我完全关闭 xcode 中的任务/应用程序并返回它之后,计时器才会触发,然后我会看到我的值被重置。不是当我只是在模拟器中回家时。

后来,我发现即使我暂时绕过这些需求并从计时器中触发午夜功能,当我在主 VC 中时,它并没有重置值,例如我的 UILabel ......即使那由于我放在那里的警报,部分代码正在触发。

所以,我的问题是,在什么功能下,我应该把我的午夜函数放入,以便能够在用户活跃在应用程序中时更改值,比如在午夜,以及当他们不在应用程序中时。当应用程序未运行时,我需要计时器仍然每小时或每分钟触发一次午夜功能,当它实际上到达午夜时,我需要将其分别放入主 VC 并重置值,以便用户最终执行打开应用程序并加载该主 VC,这些值将被重置。

本质上,用户全天都在跟踪一些数字,一旦到了午夜,这些数字就会被重置,所以当用户在一天中打开应用程序时,他会看到 0。

谢谢。

4

1 回答 1

1

不要用自己的计时器跟踪午夜。通过观察通知UIApplicationSignificantTimeChangeNotification来跟踪它。这将自动处理各种重要情况,例如时区在您背后发生变化时,以及午夜来临时。

至于在后台跟踪时间变化,没有理由为您的用例这样做。在applicationDidEnterBackground:中,注意现在是什么时间。在applicationWillEnterForeground:中,检查现在是什么时间。如果您越过了午夜界限,请设定您的价值观。

于 2013-01-07T00:50:42.703 回答