Проблемы с памятью при использовании NSTableView на основе представлений, на основе ячеек - PullRequest
0 голосов
/ 29 июня 2019

В моем проекте Какао у меня настроена кнопка, которая при нажатии расширяет оконную раму вниз, чтобы открыть контейнерное представление, внутри которого есть табличное представление.Я загружаю различные данные (изображения, тексты и т. Д.) С компьютера в память, где они хранятся до тех пор, пока приложение не закроется.Данные передаются в табличное представление для отображения при нажатии кнопки, и представление становится видимым.

Сначала я создал NSTableView на основе ячеек.Когда окно свернуто (т. Е. Не отображается контейнерное представление с табличным представлением), использование памяти в XCode составляет всего 80 МБ.Когда я расширяю окно, оно скачет до 160 МБ (что нормально).Если я сверну окно обратно, использование памяти упадет до 80 МБ без утечки памяти.

Затем я выбрал дополнительную настройку и изменил NSTableView на основе ячеек на NSTableView на основе представления.Я загрузил те же данные, но у меня начались проблемы с памятью.Когда окно было свернуто, у меня все еще было 80 МБ памяти, но при расширении оно внезапно переходит на 260 МБ +.Я предположил, что это произошло из-за того, что NSTableView на основе ячеек был более легковесным, чем на основе представления, что меня устраивало.Однако, когда я закрываю окно, использование памяти снижается до 240 МБ по сравнению с 80 МБ на базе Cell.

Я попытался отследить проблему многими способами.Я освободил источник данных, из которого загружается TableView, и принудительно установил для него значение reloadData(), но, похоже, он не устраняет проблемы с памятью.

В Интернете или документации Apple нет информации об этом, так какпохоже на то.Самым близким, что я обнаружил, был этот (не комментарий, подкомментарий), в котором говорилось, что «NSTableView на основе ячеек - это визуальный шаблон, который не хранит никаких данных сам по себе».

AmЯ что то не так делаю?Любая помощь будет оценена.

...