У меня есть приложение для iPhone, которое в основном получает информацию из API (в XML, но, возможно, в конечном итоге JSON). Объекты результата обычно отображаются в контроллерах представления (в основном, в таблицах).
Вот архитектура прямо сейчас.
У меня есть классы NSOperation, которые выбирают различные объекты с удаленного сервера. Каждый из этих классов NSOperation будет принимать собственный метод делегата, который будет запускать результирующие объекты при их разборе, а затем, наконец, метод, когда больше нет результатов. Итак, протокол для делегатов будет выглядеть примерно так:
(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;
Я думаю, что решение работает хорошо, но я заканчиваю с кучей протоколов делегатов, и затем мои контроллеры представления должны реализовать все эти методы делегатов. Я не думаю, что это плохо, но я всегда в поисках лучшего дизайна.
Итак, я думаю об использовании NSNotifications для удаления использования делегатов. Я мог бы включить объект в часть userInfo уведомления и просто опубликовать объекты как полученные, а затем заключительное событие, когда больше не будет доступно. Тогда у меня мог бы быть только один метод в каждом контроллере представления для получения всех данных, даже при использовании нескольких объектов в одном контроллере. †
Итак, кто-то может поделиться со мной некоторыми плюсами / минусами каждого подхода. Должен ли я рассмотреть возможность рефакторинга своего кода для использования событий, а не делегатов? Является ли одно лучше другого в определенных ситуациях? В моем сценарии я действительно не хочу получать уведомления в нескольких местах, так что, возможно, именно на этом основаны делегаты на основе протокола.
Спасибо!