Как вы придерживаетесь наблюдений модели MVC, не заставляя пользовательский интерфейс чувствовать себя медленным? - PullRequest
0 голосов
/ 28 октября 2018

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

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

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

  • В лучшем случае весь этот процесс является синхронным.То есть новое событие касания пользователя не обрабатывается до тех пор, пока основной поток полностью не обработает первое событие, не обработает изменение и не обновит представление.Я даже не уверен, что это утверждение верно (все это синхронно?).Предполагая, что это синхронно, худшее, что может случиться, это то, что слайдер чувствует себя запаздывающим, если выполнение всего этого обхода обходится дорого.
  • В следующем случае предположим, что процесс не является синхронным;Событие касания обновляет модель, затем асинхронно модель уведомляет контроллер об изменении.Или, возможно, модель отклоняет изменение и не уведомляет вообще.В этом случае, возможно, ползунок перемещается из-за обновления самого представления, но затем переходит в новое местоположение из-за того, что модель-> контроллер сообщает ему об этом.
  • В худшем случае: настройка ползунка фактически заставляет приложение отправлятьсообщение в какой-то другой процесс или, возможно, в сеть.Затем приложение асинхронно получает подтверждение изменения с удаленной стороны на более позднем этапе и отправляет это изменение в представление «контроллер->».

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

...