如果我长时间停止使用我的应用程序然后再回到它,似乎再次调用viewDidLoad
方法,即使我从不“退出”应用程序(通过按两次主页键并点击X)也没有重启iPhone。如果我只是转到主屏幕然后在短时间后再次打开应用程序,则不会发生这种情况。发生了什么事?
答案 0 :(得分:1)
这与操作系统管理内存的方式以及它如何处理一次打开许多不同的应用程序有关。简而言之,如果您的应用程序在后台运行了很长一段时间,最终操作系统将决定它是否处于非活动状态,并且与其视图关联的内存将被标记为在其他更需要的地方重用。这是视图控制器中的viewDidUnload
方法。每次调用viewDidUnload
方法时,都会再次调用viewDidLoad方法,以便您有机会在用户看到之前重新加载视图。
编辑:
每{{}}}分钟,你不能再依赖这种现象。它只会在操作系统需要更多内存用于活动应用程序时才会发生。如果您想确保用户在恢复使用您的应用时始终获得更新信息,请使用NSNotificationCenter并注册x
通知。
答案 1 :(得分:0)
您可以尝试监控内存警告。大多数这样的情况是内存警告获取触发器,如果视图不是最顶层,则调用viewDidUnload。因此,当您返回该视图时,将再次调用viewDidLoad。
您可以尝试在UIViewController中覆盖此方法,并查看是否调用内存警告。它可能由您的应用程序中的其他组件触发。
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}