Подтвердить что ты не робот

Проблема NSNotification removeObserver

Я либо поврежден мозгом, либо мне не хватает какого-либо понимания NSNotificationCenter

Проблема в том, что если я создаю наблюдателя и в следующей строке попытаюсь удалить его так:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllVisibleMapViews) name:@"ClearVisibleMaps" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:@"ClearVisibleMaps"];

Я получаю

*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <MyApp 0x592db70> for the key path "ClearVisibleMaps" from <NSNotificationCenter 0x4e0fbb0> because it is not registered as an observer.'

Я добавляю и удаляю строку наблюдателя после строки, чтобы сделать точку. В моем коде я буду использовать remove в dealloc.

Итак, любые идеи, почему это говорит мне, что я не добавил и не наблюдал в первую очередь?

4b9b3361

Ответ 1

Вы удаляете наблюдателя для keypath, а не для имени уведомления. Удаление должно быть примерно таким:

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:@"ClearVisibleMaps"
                                              object:nil];