Это не вопрос, а предупреждение другим, чтобы они могли их сэкономить.Предупреждение для пользователей iOS/iPhone о двойных наблюдениях NSNotification
NSNotificationCenter на прошивке 3/iPhone OS 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, я получу дубликаты уведомлений на свой контроллер представления.
В многопоточной среде это мир боли. Доверьтесь мне.
Просто поместите это там, если есть другие, которые сталкиваются с чем-то подобным.
Хорошо иметь предупреждение - вы должны, вероятно, поместить большую часть этого в ответ и принять его :) (реферат Алекс Требек бормочет что-то о том, что «должен рассказать вам свой ответ ...») –
Принял меня достаточно долго, но сделал. –