我有一个简单的NSCollectionView,它直接来自Apple的指南。一些数据点:
我modified Apple's IconCollection sample code稍微说明了这个问题:
如果您在乐器中分析应用程序并在每次刷新后设置标记,您将会看到问题。
这到底是怎么回事?
更新
我原来的示例项目不是问题的一个很好的例子。我从头开始重新创建了一个示例文件,但我发现了问题的原因,但我并不完全理解为什么我的错误导致内容对象被保留。
错误的要点是我无意中将我的视图原型的ImageCell连接回Collection View Item的代表对象插座。
这是一个正确代表问题的sample project。如果你运行它,你会看到内存使用量稳步增长,你不会在控制台中看到任何dealloc消息。打开MainMenu.xib并将图像单元格中的错误引用删除到集合视图项,当您重新运行它时,它将表现正常。
答案 0 :(得分:2)
使用imageNamed时,有一个缓存可以插入图像。正如文档所说的那样 - “可以从缓存中悄悄地删除对象”。注意“可能”。
每次都可以看到相同的对象:
NSLog(@"%p",[CustomImage imageNamed:NSImageNameBluetoothTemplate]);
答案 1 :(得分:0)
我发现了泄漏的原因并将其更新到我的问题但是又来了:
错误的要点是我无意中连接了ImageCell 我的视图原型回到了Collection View Item 代表对象出口。
上面链接的新样本项目清楚地证明了这个问题。