Увеличивает ли наблюдатель увеличение количества удержаний объекта? Если да, делает ли ARC удаление этого наблюдателя? Если нет, где я должен удалить наблюдателя?
Нужен ли NSNotificationCenter removeObserver в ARC?
Ответ 1
Вы должны явно удалить наблюдателя, даже если вы используете ARC
. Создайте метод dealloc
и удалите его..
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Если вы видите метод, который вам не нужно вызывать [super dealloc];
здесь, нужен только метод без супер-dealloc.
UPDATE для Swift
Вы можете удалить наблюдателя в методе deinit, если вы пишете код быстро.
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}