Из документов :
Важно! Центр уведомлений не удерживает своих наблюдателей,
поэтому вы должны убедиться, что вы отменили регистрацию
removeObserver: или removeObserver: name: object :), прежде чем они будут
перераспределена. (Если вы этого не сделаете, вы получите ошибку времени выполнения, если
центр отправляет сообщение освобожденному объекту.)
Если вы подклассировали кнопки, вы можете отправить всем наблюдателям сообщение о том, что наблюдаемая UIButton вот-вот начнет капать.
[[NSNotificationCenter defaultCenter] postNotificationName:@"UIButton_dealloc" object:self];
Или, в классе, который выделяет кнопки, после удаления кнопок вы можете:
[[NSNotificationCenter defaultCenter] postNotificationName:@"UIButton_dealloc" object:theButton];
И объекты-наблюдатели в обоих случаях сделают это:
// The special event
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"UIButton_event" object:theButton];
// The dealloc
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopObserving:) name:@"UIButton_dealloc" object:theButton];
....
-(void) stopObserving:(NSNotification*)notif {
if ([name isEqualToString:@"UIButton_dealloc"]) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIButton_event" object:object];
}
}
Тем не менее, это несколько запутанный пример в случае UIButton, но может быть полезным для других случаев.