5

关于didReceiveMemoryWarning/的问题viewDidUnload

如果我的应用程序有很多视图控制器,其中一个显示,其他返回(因为我使用导航控制器或标签栏控制器,没关系),哪些视图控制器将接收didReceiveMemoryWarning/ viewDidUnload,所有这些,只是隐藏,还是只显示?

显示的 VC 是否有可能收到didReceiveMemoryWarning但没有viewDidUnload(因为如图所示,它没有任何意义)。

顺便说一句,看到这张图后,我有这些问题: UIViewController init/dealloc流程图

非常感谢您的帮助。

4

2 回答 2

1

首先,有两个方法didReceiveMemwarnings:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

当应用程序收到来自系统的内存警告时调用。和 UIViewController 的

- (void)didReceiveMemoryWarning

当应用程序收到内存警告时发送到视图控制器。

其次,首先在这些方法中调用代码(当然是这样),然后在那些没有超级视图的控制器中(即那些目前没有显示的控制器)删除视图并发送 viewDidUnload

于 2012-02-10T13:49:37.600 回答
0

当收到内存警告时,它会在应用程序级别收到,您的所有 viewController 和 appdelegate 都会收到它。

没有必要viewDidUnload为任何或所有控制器调用。它严格取决于操作系统认为内存警告的重要性。像第一次一样 - 您的应用程序随后收到Level 1警告,Level 2并且很可能在第三次(短时间内)操作系统将终止应用程序,认为它已进入不稳定状态。

于 2012-02-10T14:05:20.887 回答