Я пишу SDK и ища лучшую практику для отправки объекта через NSNotification
.Опасно ли передавать объект через объект [[NSNotificationCenter defaultCenter] postNotificationName]?
Apple, и некоторые темы, в том числе this показывают, что object
паров в postNotificationNamer
должны быть отправителем уведомления, которое в большинстве случаев, self
. И ваш пользовательский объект должен быть передан через userInfo NSDictionary
. От Apple doc:
Создает уведомление с заданным именем, отправителем и информацией и отправляет его в ресивер.
Например, неадекватная практика:
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:myObject];
И рекомендуемый способ:
NSDictionary* userInfo = @{@"myMessage": myObject};
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:self
userInfo:userInfo];
Я попробовал оба метода, и все они работают хорошо. Вопрос в том, есть ли риск использовать прежний метод? В моем случае меня не интересует отправитель уведомления, но с использованием последнего метода вводится дополнительная оболочка (NSDicionary
) вокруг фактического объекта, который я хочу отправить.