微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSCollectionView 内存泄漏

如何解决NSCollectionView 内存泄漏

我有一个 NSCollectionView 指定为我的数据源和我的委托。

我有两个问题:

  1. 而不是使用 registerClass 方法,而是尝试使用 3 行注释代码和(非 nil)protoNib 方法注册 NSCollectionView 导致 {{1} } 永远为零。

  2. 使用类注册表选项,一切正常。但是,如果我删除 theItemwilldisplayItem 存根,系统在第一次调用 didEnddisplayingItem 时会消耗大量内存(对这两个存根进行了数千次内部调用)并最终崩溃。 Instruments 显示 数千 4k itemForRepresentedobjectAtIndexPath 是由 @autoreleasepool content items 创建的。

知道为什么会发生这种情况吗?

AppKit

解决方法

Appkit 类并非设计为它们自己的委托。 NSCollectionView 实现了几个 NSCollectionViewDelegate 方法并调用委托。我不知道为什么它是这样实现的,感觉不对,但事实就是如此。如果集合视图是它自己的委托,并且子类中没有实现委托方法,则调用会导致无限循环。解决方案:不要将 delegate 设置为 self

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。