Наблюдатель NSNotification

Просто интересно, есть ли у кого-нибудь опыт одновременной активации большого количества наблюдателей NSNotification?

Каковы накладные расходы наблюдателя? Разумно ли запускать, скажем, 50, 100 и более наблюдателей одновременно?

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

Привет, Дуг


person Doug    schedule 16.08.2012    source источник
comment
Вы наблюдаете за объектом продажи из нескольких мест или просто размещаете большое количество уведомлений? Кроме того, вы должны пересмотреть дизайн вашего класса, чтобы следовать другим шаблонам. Об этом свидетельствует необходимость сильно полагаться на NSNotificationCenter.   -  person J2theC    schedule 16.08.2012


Ответы (2)


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

Это зависит от того, как обрабатывается уведомление. Отправка уведомлений не является накладными расходами, это всего лишь 50-100 вызовов методов, как и любые другие методы. (У меня в приложении 5000 методов). Проблема в том, как она решается. Если каждый наблюдатель будет долго блокировать уведомление, то ничего не поделаешь. Вместо этого я предлагаю использовать очереди NSNotification Очередь NSNotification

Если позволяет время, я также предлагаю сослаться на чтение статья Apple об обмене объектами.

person Kunal Balani    schedule 16.08.2012

Я собираюсь воспользоваться советом J2theC по этому поводу.

В настоящее время я меняю шаблон проектирования, чтобы использовать методы делегата, чтобы предотвратить зависание.

Спасибо за ответ!

person Doug    schedule 16.08.2012
comment
какой смысл заново изобретать цикл? Apple сделала то же самое. Apple предоставила вам шаблон делегирования и уведомления по той же причине. - person Kunal Balani; 17.08.2012