6

У меня есть приложение для iPhone, которое в основном получает информацию от API (в XML, но, возможно, JSON). Объекты результатов обычно отображаются в виде контроллеров (в основном, таблиц).NSNotification vs. Протоколы делегатов?

Вот архитектура прямо сейчас.

У меня есть классы NSOperation, которые извлекают разные объекты с удаленного сервера. Каждый из этих классов NSOperation будет использовать пользовательский метод делегата, который будет отстреливать результирующие объекты по мере их анализа, а затем, наконец, метод, когда больше нет результатов. Таким образом, протокол для делегатов будет что-то вроде:

(void) ObjectTypeResult:(ObjectType *)result; 
(void) ObjectTypeNoMoreResults; 

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

Итак, я думаю об использовании NSNotifications, чтобы удалить использование делегатов. Я мог бы включить объект в пользовательскую часть уведомления и просто отправить объекты в том виде, в каком они были получены, а затем окончательное событие, когда больше нет. Тогда у меня мог быть только один метод в каждом контроллере представления, чтобы получать все данные, даже при использовании нескольких объектов в одном контроллере. †

Итак, может ли кто-нибудь поделиться со мной некоторыми плюсами/минусами каждого подхода. Должен ли я рассматривать рефакторинг моего кода для использования событий, а не делегатов? Лучше ли тогда другой в определенных ситуациях? В моем сценарии я действительно не хочу получать уведомления в нескольких местах, поэтому, возможно, делегаты на основе протокола - это путь.

Спасибо!

ответ

5

На самом деле, ваш дизайн звучит. Четкий подход Cocoa использует делегатов и гораздо предпочтительнее бросать объекты вокруг. Кроме того, определение ваших протоколов таким образом делает ваш код очень ясным и понятным. В целом: не отставайте от хорошей работы