Objective c NSCollectionView未释放ARC下集合视图项原型的内存
我正在使用Objective c NSCollectionView未释放ARC下集合视图项原型的内存,objective-c,cocoa,memory-management,core-animation,nscollectionview,Objective C,Cocoa,Memory Management,Core Animation,Nscollectionview,我正在使用NSCollectionView显示数据库查询的结果(使用数组控制器) 每次执行搜索时,NSCollectionViewItemprototype视图上都会使用大量内存,并且在移动过包含NSCollectionView的视图后,这些内存永远不会被释放 集合视图原型是NSBox的一个自定义子类(使用drawRect:直观地修改该框)。NSBox包含几个NSTextFieldCells。对于我所做的每一次搜索(返回20多条记录),在我的自定义NSBox类(CALayer)上都会使用大约10
NSCollectionView
显示数据库查询的结果(使用数组控制器)
每次执行搜索时,NSCollectionViewItem
prototype视图上都会使用大量内存,并且在移动过包含NSCollectionView
的视图后,这些内存永远不会被释放
集合视图原型是NSBox
的一个自定义子类(使用drawRect:
直观地修改该框)。NSBox
包含几个NSTextFieldCells
。对于我所做的每一次搜索(返回20多条记录),在我的自定义NSBox
类(CALayer
)上都会使用大约100 MB的内存,而且从未发布过
如果我从NSBox
原型中删除自定义类,则不再使用内存,但是无论是否使用NSBox
子类,NSTextFieldCell
(未使用自定义子类)都将使用50MB用于我所做的每次大型搜索,而不会释放
加载新视图后,如何确保集合视图项的组件占用的内存得到释放?是,这是一个ARC应用程序。我开始缩小此问题的范围。它与在视图上启用核心动画有关。之前,我在主窗口的内容视图上启用核心动画。我现在只在一个特定视图上启用它。问题仍然存在于该特定视图上。每次创建启用CA层的视图时,它都会占用额外的内存,并且在从superview中删除该视图后不会释放。您的问题没有提供足够的详细信息来给出具体的答案。至少,您需要发布与管理已确定导致内存使用的视图相关的代码。我的建议是使用仪器来分析应用程序,并准确确定内存的使用情况。然后,看看有没有什么你没有发布的东西。使用ARC时,您不需要调用release,但很可能会无意中保留对某个对象的强引用,或者在两个对象之间创建一个retain循环,从而导致它/它们永远不会被释放。