1.当控制器接收到内存警告时,会调用 didReceiveMemoryWarning
方法
2.didReceiveMemoryWarning
方法内部的默认实现以下步骤: 首先会检测控制器的 view
在不在屏幕上
if (self.view.superview == nil) {
// 检测控制器的view在不在屏幕上
// 尝试销毁控制器的 view
// 即将销毁的时候,就会调用控制器的 viewWillUnload
// 销毁完毕的时候,就会调用控制器的 viewDidUnload方法
} else {
// 不销毁控制器的view
}
3.当需要再次使用控制器的 view 时,又会调用 loadView 方法来创建 view
4.接着会调用一系列的生命周期方法
viewDidLoad —> ……
5.生命周期循环
loadView –> viewDidLoad –> ..可见.. –内存警告–> didReceiveMemoryWarning —> viewWillUnload –> viewDidUnload —再次使用—> loadView
所以当我们的程序内存过大时,我们挂载在后台的 QQ 有时候会出现已经推出的情况!当我们再次点击的时候,QQ 又重新加载运行起来!