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