Предупреждение для пользователей iOS/iPhone о дублирующихся наблюдениях NSNotification

Это не вопрос так как предупреждение другим сэкономить им некоторое время.

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, то я получу дублирующиеся уведомления своему контроллеру представления.

В многопоточной среде это - мир вреда.Поверьте мне.

Просто поместив это там в случае, если существуют другие, которые сталкиваются с чем-то вроде этого.

21
задан Praveen Vinny 29 December 2012 в 02:41
поделиться