Накладные расходы на NSNotifications - PullRequest
1 голос
/ 09 июня 2011

Я недавно начал использовать NSNotification s:

[[NSNotificationCenter defaultCenter] postNotificationName: selector: object:]; ....

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

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

Ответы [ 2 ]

7 голосов
/ 09 июня 2011

О NSNotification s нужно помнить, что они являются механизмом блокировки. Таким образом, хотя объект, отправляющий уведомление, не должен знать, кто его получает, если получателей слишком много, ему придется обработать их все, прежде чем вызов postNotification сможет вернуться. Это то, что вы должны принять во внимание.

Таким образом, как сказал @slev, делегаты - лучший подход. Используйте уведомления только тогда, когда вы не можете использовать делегированный подход.

1 голос
/ 09 июня 2011

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

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

...