iPhone Objective-C Размещение NSNotifications - PullRequest
0 голосов
/ 13 февраля 2010

У меня довольно сложное приложение для iphone, в котором происходит много асинхронных процессов. Чтобы справиться с этим, я активно использую Центр NSNotification. У меня вопрос: какова «лучшая практика», если такая существует »для регистрации уведомлений? Прямо сейчас они разбросаны по моему коду с опасной случайностью. Я собираюсь перейти к производству и хочу, чтобы он был очищен Я думаю о наличии метода «registerNotifications» в viewDidLoad на главном экране, который, очевидно, регистрирует все уведомления за один снимок. Это звучит разумно? Если нет, то какой будет предпочтительный способ борьбы с этим. Заранее спасибо за вашу помощь !!

Ответы [ 2 ]

4 голосов
/ 14 февраля 2010

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

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

Одна из самых больших ошибок, которые люди делают с уведомлениями, заключается в том, что они регистрируют контроллеры, когда им действительно необходимо зарегистрировать свою модель данных. Например, предположим, что вы загружаете некоторые данные с URL-адреса и хотите обновить интерфейс по мере его развития и / или когда он заканчивается. Если в вашем пользовательском интерфейсе несколько представлений и вы регистрируете контроллеры, то каждое представление должно управлять уведомлением (которых может быть несколько). Однако, если вы настроили общую модель данных для получения уведомления, вам нужно иметь только максимум два уведомления. Один из них пойдет в модель данных, чтобы модель данных могла обновляться самостоятельно, а затем вы можете попросить модель данных генерировать общее уведомление для любых прослушивающих представлений об обновлении себя из модели данных.

Зависимость контроллера представления от модели данных во всех случаях значительно упрощает проектирование.

0 голосов
/ 13 февраля 2010

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

...