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中的解释文本。这很好地解释了这一点。