NSCollectionView的setContent:内存管理

时间:2011-09-24 23:59:16

标签: objective-c macos cocoa memory-management nscollectionview

我使用NSCollectionView填充[collectionView setContent:data];,其中dataNSArray,其中包含所有相同的自定义NSObject子类的对象。集合视图的项原型是标准NSCollectionViewItem,而不是子类。使用我的NSObject子类的绑定填充集合项的视图。

现在问题是,在使用快照分析我的应用时,我发现使用集合视图打开窗口时内存会大大增加。仪器将此内存增加精确定位到[collectionView setContent:data];行。这个记忆永远不会被回收。有什么想法吗?

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

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

2 个答案:

答案 0 :(得分:1)

您是否为CollectionView KVO提供了ViewController?

CollectionView的XIB是否为ArrayController?

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

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

答案 1 :(得分:0)

我认为您不会在您的范围内发布数据...如果您拥有'数据'对象,请确保将其发布。

有些问题可以更好地回答 -

  1. 您如何分配'数据'?
  2. 谁正在发布它?
  3. [collectionView setContent:data];更多关于此行的代码段