Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 显示视图控制器时是否调用didReceiveMemoryWarning/viewDidUnload?_Objective C_Ios_Uiviewcontroller_Didreceivememorywarning - Fatal编程技术网

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

Objective c 显示视图控制器时是否调用didReceiveMemoryWarning/viewDidUnload?,objective-c,ios,uiviewcontroller,didreceivememorywarning,Objective C,Ios,Uiviewcontroller,Didreceivememorywarning,关于didReceiveMemoryWarning/viewDidUnload的问题 如果我的应用程序有多个视图控制器,其中一个显示,其他的返回(因为我使用导航控制器或选项卡栏控制器,这无关紧要),哪个视图控制器将接收didReceiveMemoryWarning/viewDidUnload,它们全部隐藏,还是只显示 显示的VC是否可能接收到didReceiveMemoryWarning,而不是viewDidUnload(因为如图所示,它没有任何意义) 顺便说一下,看到这个图表后,我有以下问题:

关于
didReceiveMemoryWarning
/
viewDidUnload
的问题

如果我的应用程序有多个视图控制器,其中一个显示,其他的返回(因为我使用导航控制器或选项卡栏控制器,这无关紧要),哪个视图控制器将接收
didReceiveMemoryWarning
/
viewDidUnload
,它们全部隐藏,还是只显示

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

顺便说一下,看到这个图表后,我有以下问题:


非常感谢您的帮助。

首先,有两种方法可以帮助您接收MemWarnings:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
当应用程序收到来自系统的内存警告时调用。 和UIViewController的

- (void)didReceiveMemoryWarning
当应用程序收到内存警告时发送到视图控制器


其次,首先在这些方法中调用代码(当然是这样),然后在没有SuperView的控制器中(即当前未显示的控制器),删除视图并发送viewDidUnload。当收到内存警告时,将在应用程序级别接收该警告,您的所有ViewController和appdelegate都会收到它


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

从图表中可以看出,只有调用didReceiveMemoryWarning时才会调用viewDidUnload???嗯,这不是真的,这是我问题的原因。你知道更好的图表吗?谢谢。看来这本书有答案:仔细阅读图表@Richardo links中的解释文本。这很好地解释了这一点。