Почему нам нужно явно вызывать removeobserver в Dealloc?
Почему среда выполнения не может определить, что экземпляр освобожден?
Почему нам нужно явно вызывать removeobserver в Dealloc?
Почему среда выполнения не может определить, что экземпляр освобожден?
В то время, когда NSNotificationCenter был первоначально реализован, не было такого понятия, как автоматическое обнуление слабых ссылок в Objective-C (это пришло с ARC). Можно было бы реализовать pub-sub с использованием слабых ссылок, но по какой-то причине они не изменили API/поведение.