Это не вопрос так как предупреждение другим сэкономить им некоторое время.
NSNotificationCenter на iOS ОС 3/iPhone 3 (я принимаю также Mac OS X и iOS 4) имеет следующее поведение:
При регистрации себя многократно для точного определенного уведомления NSNotificationCenter НЕ распознает дублирование и вместо этого исчерпает столько уведомлений Вам, сколько Вы зарегистрировали наблюдение для.
Это почти никогда не поведение, которое Вы хотите видеть, и почти всегда случайно.
Пример:
Я хочу, чтобы мой контроллер представления получил уведомления от одноэлементного сетевого объекта, когда новые данные входят:
- (void) viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
но ранее я уже вставил то же самое viewWillAppear
:
- (void) viewWillAppear
{
[super viewWillAppear];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
Обратите внимание, что это - точно то же уведомление, решая тому же наблюдателю, отправителю и названию уведомления.
В этом случае, если я не удалю один из тех вызовов addObserver, то я получу дублирующиеся уведомления своему контроллеру представления.
В многопоточной среде это - мир вреда.Поверьте мне.
Просто поместив это там в случае, если существуют другие, которые сталкиваются с чем-то вроде этого.