В любом типичном приложении для iPhone будут образцовые классы, которые ответственны за загрузку данных / парсинг. После завершения загрузки данных / задачи анализа, затронутые контроллеры должны были быть уведомлены относительно изменения в модели и обновить представление соответственно.
Существует несколько подходов слушателя/наблюдателя для этого в разработке приложения для iPhone. Каковы профессионалы/недостатки и причины использования каждого из следующих подходов?
По моему собственному опыту:
Delegation:
Я писал о проблемах управления памятью, возникающих при делегировании, в этой статье на своем блоге:
http://akosma.com/2009/01/28/10-iphone-memory-management-tips/
NSNotification:
KVO:
Лично я, имея дело с сетевыми приложениями, разговаривающими с удаленным веб-сервисом, использую однокнопочный класс загрузчика данных (обертывание ASIHTTPRequest и обработка всех задач сериализации и десериализации), который выдает всплывающие уведомления, когда что-то происходит. Таким образом, я могу попросить делегата приложения самостоятельно обрабатывать ошибки подключения (всплывающие уведомления и т.п. при необходимости), и каждый контроллер заботится только о тех ответах, которые он хочет получить.
Конечно, такой подход зависит от приложения, но эта общая архитектура может стать отправной точкой для вашего собственного кода.