iOS - Обновление контроллеров представления в applicationDidBecomeActive - PullRequest
0 голосов
/ 18 августа 2011

В настоящее время я разрабатываю приложение для iPhone, связывающееся через REST с веб-сервером.

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

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

С наилучшими пожеланиями

Карстен

1 Ответ

1 голос
/ 18 августа 2011

Публикация уведомления должна использоваться, если отправитель ничего не знает о наблюдателях (не должен зависеть от них).Например, объект данных отправляет уведомление при его изменении, поэтому связанные с ним визуальные объекты могут обновляться.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...