在显示视图控制器时是否调用didReceiveMemoryWarning / viewDidUnload?

时间:2012-02-10 12:24:59

标签: objective-c ios uiviewcontroller didreceivememorywarning

关于didReceiveMemoryWarning / viewDidUnload的问题。

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

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

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

首先,有两种方法didReceiveMemwarnings:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
当应用程序从系统收到内存警告时,将调用

。 和UIViewController的

- (void)didReceiveMemoryWarning

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

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

答案 1 :(得分:0)

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

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