Могут ли NSOutlineView и NSTreeController обрабатывать тысячи объектов? - PullRequest
1 голос
/ 11 ноября 2010

Фон

  • Приложение Core Data на Snow Leopard 10.6.4 с GC

  • У меня естьNSOutlineView, поддерживаемый NSTreeController с использованием привязок

  • Я создаю десятки объектов в фоновом подклассе NSOperation, сохраняю и использую mergeChangesFromContextDidSaveNotification для слияния с основным контекстом, все как рекомендуется в Appleдокументы

  • В основном контексте есть тысячи объектов

Проблема

У меня быломного проблем с производительностью.Иногда слияние может занять несколько секунд, что блокирует мой пользовательский интерфейс.Кажется, он также использует довольно много памяти.

Недавно я обнаружил, что другие тоже имели эту проблему .Я начинаю думать, что это ограничение комбинации NSTreeController / NSOutlineView с привязками.

Вопросы

  1. Могут ли NSOutlineView и NSTreeController обрабатывать тысячиобъектов эффективно?

  2. Этот пост , казалось, подразумевал, что это было проблемой на 10.6.2, цитируя rdar: // 7139579.Кто-нибудь знает, было ли это «исправлено»?

Буду очень признателен за любые предложения.

1 Ответ

0 голосов
/ 18 ноября 2010

Итог?Я думаю, что мне нужно оптимизировать свое приложение обычным способом.Кроме того, было получено много уведомлений KVO, поэтому, возможно, показывать меньше данных - это путь.Когда я ускорил свое приложение, я могу доложить здесь еще раз.

Обновление: сентябрь 2011 года

Я так много узнал, так как этот вопрос был опубликован.Один из моих больших уроков заключается в том, что иногда вам нужно отпустить то, что вы хотите, и принять то, что это будет компромиссом дизайна.

В настоящее время я изменяю внешний вид моего приложения, чтобысделай это быстрее.Я узнал, что NSTreeController предназначен для обработки не более нескольких сотен записей.Тысячи записей означают, что пользователь все равно будет сбит с толку.Я изменил свой интерфейс, чтобы сделать его намного проще.И теперь вместо этого я использую табличное представление, которое намного быстрее.

...