现在的位置: 首页 > 综合 > 正文

ios 用了ARC技术后内存释放的方法

2013年09月18日 ⁄ 综合 ⁄ 共 653字 ⁄ 字号 评论关闭

前一段时间,在网上找如何释放内存的方法。可是,怎么找也找不到。今天我在不断的测试看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。

抱歉!评论已关闭.