我的应用中的一个标签提供了博文。我注意到当我移动到另一个选项卡或离开应用程序时,当我返回时,新的博客帖子没有下载。下载由ViewController中的viewDidLoad()
启动。当我回到这个观点时,它没有被解雇。
为什么我离开应用时没有viewDidLoad()
解雇?应用程序在内存中加载视图的时间有多长?
当用户返回应用或其他标签时,我应该如何检查新帖子?
谢谢!
答案 0 :(得分:3)
viewDidLoad
可能不是下载更新的最佳位置。例如,如果您从ViewController A推送 - >> ViewController B,第一个视图控制器(A)没有卸载。
您可能希望将代码放在viewDidAppear
或viewWillAppear
。
请查看ViewController LifeCycle以获取参考资料。
答案 1 :(得分:1)
仅在实例化ViewController时调用ViewDidLoad一次。在UITavBarController中,子视图控制器仅实例化一次。当您从tab移动到tab时,ViewControllers将保留在内存中。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITabBarController_Class/
如果您使用该应用程序,那么iOS会将其保留在内存中,直到它开始变低,然后开始终止应用程序。
看一下TabBar的代表
这可以告诉您何时用户切换标签。但如果它们来回翻转,它可能会不必要地创建几个API请求。
答案 2 :(得分:1)
您可以使用applicationDidBecomeActive
通知触发更新或您希望应用从后台恢复时执行的任何其他操作。
这里有一个很好的答案:How can I use applicationDidBecomeActive in UIViewController?
Apple网站上还有一篇关于处理各种应用状态转换的文章:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html