NSNotification по сравнению с протоколами делегата?

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

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

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

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

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

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

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

Спасибо!

6
задан jr. 12 March 2010 в 19:15
поделиться

1 ответ

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

.
5
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: