1.内存不足时执行,执行者非当前显示的controller
如:controller1 push controller2 入stack 导致内存警告,controller1会自动执行viewDidUnload方法,若 controller2 pop出stack,那么controller1会重新执行viewDidLoad方法
模拟器发出内存警告:硬件--->模拟器内存警告
2.viewDidUnload执行内容
self.A = nil;
self.B = nil;
在此方法中可以释放一些容易构建的对象,如本地图片等,不易构建的如服务端数据,要在init方法中进行构建,并且不要在viewDidUnload方法中释放,由于执行完viewDidUnload后 在pop到此controller会执行viewDidLoad方法
设置成nil的目的是防止一个已经释放的对象执行而导致crash,由于空指针会发送消息返回为0不会引发crash