swift - 基于单元的基于视图的 NSTableView 的内存问题
问题描述
在我的 Cocoa 项目中,我设置了一个按钮,当按下该按钮时,它会向下展开窗口框架以显示一个容器视图,其中包含一个表视图。我将各种数据(图像、文本等)从计算机加载到内存中,直到应用退出。当按下按钮并且视图变为可见时,数据被传递到表视图以进行显示。
我首先创建了基于单元的 NSTableView。当窗口折叠时(即不显示容器视图及其表视图),XCode 中的内存使用量仅为 80 MB。当我展开窗口时,它会跳到 160 MB(这是正常的)。如果我向后折叠窗口,内存使用量将降至 80 MB,并且没有内存泄漏。
然后我选择了更多的自定义并将 Cell-Based NSTableView 更改为 View-Based NSTableView。我已经加载了相同的数据,但我开始遇到内存问题。当窗口折叠时,我仍然有 80 MB 的内存使用,但当展开时,它突然跳到 260 MB+。我认为这是因为基于单元的 NSTableView 比基于视图的更轻量级,这对我来说很好。但是,当我折叠窗口时,与 Cell-Based 的 80 MB 相比,内存使用量下降到只有 240 MB。
我试图以多种方式追踪问题。我清空了从中加载 TableView 的数据源,并对其进行了强制reloadData()
,但它似乎并没有清除内存问题。
看起来,互联网或 Apple 文档上没有关于它的信息。我发现最接近的是这个(不是评论,子评论),它说“基于单元的 NSTableView 是一个可视模板,它自己不存储任何数据”。
难道我做错了什么?任何帮助,将不胜感激。
解决方案
推荐阅读
- javascript - 滚动上的文本渐变动画
- python - FastAPI 的应用挂载是如何工作的?
- c++ - 头文件 C++ 中的数组问题
- http - 启用自动添加 cookie
- c# - 如何从存储过程 EF Core 3.1 中获取多个 OUTPUT 参数
- vba - 在 BrowseForFolder 函数中指定路径的 VBA 语法是什么?
- python - jupyter notebook 上的 pandas_profiling 未在 github 上显示报告
- javascript - AJV 不使用 compile 返回的函数验证我的身体
- r - 从一列而不是行中删除重复项
- ruby-on-rails - 从参数 ID 获取类别名称?