0

如果我长时间停止使用我的应用程序然后返回它,似乎该viewDidLoad方法再次被调用,即使我从未“退出”应用程序(通过按两次 home 键并点击 X)我也没有重新启动 iPhone。如果我只是转到主屏幕,然后在短时间内再次打开应用程序,则不会发生这种情况。到底是怎么回事?

4

2 回答 2

1

这与操作系统管理内存的方式以及它如何处理同时打开许多不同的应用程序有关。简而言之,如果您的应用程序在后台运行了很长时间,最终,操作系统将决定它处于非活动状态,并且与其视图关联的内存将被标记为在其他更需要它的地方重用。这是viewDidUnload您的视图控制器中的方法。每当viewDidUnload调用该方法时,都会再次调用 viewDidLoad 方法,以便您有机会在用户看到它之前重新加载您的视图。

编辑:

你不能指望这种现象每x分钟都在发生。只有当操作系统需要更多内存用于活动应用程序时才会发生这种情况。如果您想确保用户在恢复使用您的应用程序时始终获得更新信息,请使用 NSNotificationCenter 并注册UIApplicationDidBecomeActive通知。

于 2012-11-29T01:06:59.383 回答
0

您可以尝试监视内存警告。像这样的大多数情况是内存警告获取触发器,并且如果视图不是最顶部的,则在此之后调用 viewDidUnload。因此,当您返回该视图时, viewDidLoad 将再次被调用。

您可以尝试在 UIViewController 中覆盖此方法并查看是否调用了内存警告。它可能由您的应用程序中的其他一些组件触发。

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
于 2012-11-29T01:11:14.143 回答