Is NSNotificationCenter removeObserver in ARC need

2019-01-21 21:46发布

问题:

This question already has an answer here:

  • KVO and ARC how to removeObserver 3 answers
  • In ARC do we need to send removeObserver: explicitly? 4 answers

Does adding an observer increase the retain count of an object? If yes, does ARC handle the removing of this observer too? If not, where should I remove the observer?

回答1:

You should explicitly remove the observer even you use ARC. Create a dealloc method and remove there..

-(void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

If you see the method you don't need to call [super dealloc]; here, only the method without super dealloc needed.

UPDATE for Swift

You can remove observer in deinit method if you are writing code in swift.

deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
       }