Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSCollectionView未释放ARC下集合视图项原型的内存_Objective C_Cocoa_Memory Management_Core Animation_Nscollectionview - Fatal编程技术网

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循环,从而导致它/它们永远不会被释放。