0

我有一个使用NSCollectionViewwhere[collectionView setContent:data];填充的对象,其中填充了所有相同自定义子类的对象。集合视图的项目原型是标准的,不是子类的。使用我的子类中的绑定填充集合项的视图。dataNSArrayNSObjectNSCollectionViewItemNSObject

现在问题来了,在使用 heapshots 分析我的应用程序时,我发现在使用集合视图打开窗口时内存有巨大的增加。Instruments 将这种内存增加精确到了[collectionView setContent:data];线路上。这种记忆永远不会被回收。有任何想法吗?

编辑:我像这样访问数据对象:

NSArray *data = [[[[MWWeatherController sharedInstance] cachedData] objectForKey:[NSString stringWithFormat:@"%u",index]] objectForKey:@"daily"];
4

2 回答 2

1

你是否让 CollectionView KVO 的 ViewController 兼容?

CollectionView 的 XIB 有 ArrayController 吗?

将XIB 的CollectionView 绑定到ArrayController 的arrangedObjects 并通过您的ViewController 方法设置Items,例如setMyCustomObjectsArray,该方法再次设置ArrayController 观察到的数组。

确保在自定义对象的 dealloc 方法中也正确释放所有内容。

于 2011-09-29T09:06:56.757 回答
0

我认为您没有在您的范围内发布数据......如果您拥有“数据”对象,请确保您发布它。

一些查询可以更好地回答它 -

  1. 你如何分配“数据”?
  2. 谁在释放它?
  3. [collectionView 设置内容:数据];围绕这一行的更多代码片段
于 2011-09-28T06:34:06.440 回答