陈斌彬的技术博客

Stay foolish,stay hungry

iOS 系统内存警告的处理过程

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 又重新加载运行起来!