我有一些需要经常调用的代码,例如检查它是哪一天,如果是第二天,那么在tableView中移动日期字符串。
现在我认为viewDidLoad会一直被调用,所以它会很好'把它放在那里。但是,我已经一夜之间离开了模拟器,我已经按下了主页按钮并再次点击,更改了VC等,并且viewDidLoad还没有被击中。
我可以选择进行零星检查,例如,这是新的一天吗?因为x发生了等等。
答案 0 :(得分:3)
在这种特定情况下,您可以订阅NSCalendarDayChangedNotification,以便在日期更改时收到通知,并在视图控制器中做出相应响应。通常,didBecomeActive或viewDidAppear可能会起作用。
答案 1 :(得分:1)
我可以选择进行零星检查,例如,这是新的一天吗?
这取决于“是”的含义是什么!特别是“是”何时?你说“零星”,但那只是绒毛。你什么时候需要知道这个?您想要回应什么样的刺激?用户打开您的应用时?然后将其放入applicationDidBecomeActive
。每天中午?然后运行NSTimer。真的,这里的问题是你自己似乎不知道何时你需要执行这些检查。
答案 2 :(得分:1)
虽然在您的应用中,很容易不断检查某些内容。您只需创建一个后台线程。但是,您所描述的是一个在应用程序生命周期之外持续存在的线程。
请阅读Apple自己提供的this documentation。你必须有一个很好的借口来放一个后台线程。此类线程的范围仅限于某些场景,例如下载背景资料,播放声音等。
对于您的方案,我会查看Application Delegate中找到的applicationDidBecomeActive(_:)
。在那里你可以模仿这种不断的检查。但要注意,不要在启动时加重字,否则如果在合理的时间内它无法激活,你的应用可能会被自动杀死。