objective-c - NSCollectionView的setContent : memory management

标签 objective-c macos cocoa memory-management nscollectionview

我有一个 NSCollectionView,我使用 [collectionView setContent:data]; 填充它,其中 data 是一个 NSArray 填充了所有相同自定义 NSObject 子类的对象。 Collection View 的项目原型(prototype)是标准的 NSCollectionViewItem,而不是子类。集合项的 View 是使用我的 NSObject 子类中的绑定(bind)填充的。

现在问题来了,在使用堆快照分析我的应用程序时,我发现使用 Collection View 打开窗口时内存会大幅增加。 Instruments 将内存增加精确定位到 [collectionView setContent:data]; 行。该内存永远不会被回收。有什么想法吗?

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

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

最佳答案

您是否使 CollectionView KVO 的 ViewController 兼容?

CollectionView 的 XIB 有 ArrayController 吗?

将 XIB 的 CollectionView 绑定(bind)到 ArrayController 的排列对象,并通过 ViewController 方法设置项目,例如setMyCustomObjectsArray,再次设置 ArrayController 观察到的数组。

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

关于objective-c - NSCollectionView的setContent : memory management,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7542736/

相关文章:

macos - OS X Yosemite 更新后 IntelliJ 无法启动

objective-c - cocoa Pod svn 问题

objective-c - Cocoa:NSUInteger 和 UInt32 都定义为 32 位无符号整数。那么为什么会出现警告呢?

objective-c - 如何在 Objective-C 中解析 url?

macos - NSArrayController sortDescriptors 不起作用

macos - 如何在cocoa应用程序中使用PDFView?

objective-c - cocoa @sum数组运算符太慢-替代方案?

objective-c - 如何处理在 Obj C 或 Swift 中返回对象或 nil 的 Core Data 自定义方法

objective-c - iPad/iPhone 方向问题

objective-c - 如何动态更改nstableview中显示的行数