目标c - 驻留和脏内存在解除集合视图控制器后未被释放

时间:2013-08-20 08:37:44

标签: objective-c ios6 automatic-ref-counting

我正在加载一个2X2集合视图,它有多个单元格,每个单元格都有imageview.But当我解除这个控制器时,驻留内存和脏内存不断增加。

我的控制器中有多个视图,集合视图就是其中之一,我做了addsubview和removefromsuperview来显示控制器中的不同视图。在我关闭控制器之前,我从控制器的子视图中删除所有子视图,包括集合视图。

但这不会释放常驻内存,超过500MB后,应用程序会在抛出内存警告后崩溃。 这是我在dismissviewcontroller -

之前删除子视图的代码
-(void)removeSubViewsOfView:(UIView *)view{        
    NSArray *viewsToRemove = [view subviews];
    for (int i = 0; i<[viewsToRemove count]; i++) {
        UIView *v = [viewsToRemove objectAtIndex:i];

            [v removeFromSuperview];
            v=nil;
    }
}

我也在使用ARC。

1 个答案:

答案 0 :(得分:0)

一些建议:

  1. 确保将所有IBOutlets设置为nil-dealloc方法

  2. 如果您正在使用视图控制器包含,请致电-removeFromParentViewController

    - (void)removeSubViewsOfView:(UIView *)view{        
        NSArray *viewsToRemove = [view subviews];
        for (int i = 0; i<[viewsToRemove count]; i++) {
            UIView *v = [viewsToRemove objectAtIndex:i];
    
            [v removeFromSuperview];
            NSViewController* vController = nil;//retrieve your view controller
            [vController removeFromParentViewController];
            v=nil;
        }
    }
    
  3. 它不会生成脏内存,但如果在对象之间保持相互strong引用,它可能会泄漏对象。保留B和B保留A

  4. 希望有所帮助:)