Привязка valueurl на больших массивах вызывает вялый пользовательский интерфейс

StackOverflow https://stackoverflow.com/questions/2542597

Вопрос

У меня есть большой набор данных (около 3500 объектов), который возвращается с удаленного сервера через HTTP. В настоящее время данные представлены в NSCOLECTECTVIEW. Одним из аспектов данных является пакет пути для сервера для небольшого изображения, которое представляет данные (подумайте о миниатюре для простоты).

Привязки работают фантастически для уже возвращаемых данных, и привязывание изображения с помощью привязки valueurl легко сделать. Тем не менее, пользовательский интерфейс очень вялый при прокрутке набора данных - что заставляет меня думать, что NSCollectionView Получает все данные изображения вместо только данных изображения, используемых для отображения доступных в настоящее время изображений.

У меня сложилось впечатление, что элементы управления какао были достаточно умными, чтобы извлечь данные только для информации, которая фактически выводится в пользовательский интерфейс посредством ленивой загрузки. Это, безусловно, имеет место с NSTableView - Но я мог бы быть введен в заблуждение в этой мысли.

Должен лениво обязательный акт ValueUrl NSCollectionView?

Я мог бы создать механизм кэширования (на самом деле у меня уже есть такая вещь для другого приложения - см. Мой пост здесь, если вам интересно Заполнение NSImage с данными из асинхронного NSURLConnectionНо я действительно не хочу идти по этому пути, если мне не нужно для этой конкретной реализации, поскольку пользователь может часто изменять наборы данных и может захотеть только небольшие подзадачи данных.

Есть предложенные подходы?

Спасибо!

Обновлять

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

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

Это было полезно?

Решение

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

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

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

Конечно, было бы неплохо, если бы какао идентифицировал все это для меня, но что я бы оставил? :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top