我正在加载一个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。
答案 0 :(得分:0)
一些建议:
确保将所有IBOutlets
设置为nil
至-dealloc
方法
如果您正在使用视图控制器包含,请致电-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;
}
}
它不会生成脏内存,但如果在对象之间保持相互strong
引用,它可能会泄漏对象。保留B和B保留A
希望有所帮助:)