前一段时间,在网上找如何释放内存的方法。可是,怎么找也找不到。今天我在不断的测试看view的父窗口
NSLog( @"%@" , self.view.superview.superview.superview.superview );
这时我就发现,每次页面转跳,父窗口和父窗口的子窗口还是存在,如果一直页面跳转,没有把没用的窗口的内存释放,内存就越来越多,就像天梯那样,永远都没有尽头。
废话不多说,进入重点。
- (void) viewWillDisappear:(BOOL)animated { [ super viewWillDisappear: animated ]; // 画面隐藏时停止timer if ( [ timer isValid ] ) { [ timer invalidate ]; } // NSLog( @"%@" , self.view.subviews ); // [ self.view removeFromSuperview ]; for ( UIView* temp in self.view.subviews ) { [ temp removeFromSuperview ]; } //--- 释放内存 ---// // 套题数组 // allTheQuestions = nil ; }
我是在页面将要消失之前释放没用的指针,我就举例,上面代码中
allTheQuestions 是一个可变数组(NSMutableArray)存储了40个元素。如果我在页面跳转之前没有释放这个数组的内存,如上代码。用Instrument来检测如下图:
当我把内存释放之后,如下图:
关键就是把没用的指针给它赋值未nil。