是否需要ARC中的NSNotificationCenter removeObserver?

时间:2013-03-27 10:15:57

标签: iphone ios objective-c cocoa-touch automatic-ref-counting

添加观察者是否会增加对象的保留计数? 如果是,ARC是否也会处理此观察者的移除?如果没有,我应该在哪里删除观察者?

1 个答案:

答案 0 :(得分:79)

即使您使用ARC,也应该明确删除观察者。创建dealloc方法并删除..

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

如果你看到这个方法,你不需要在这里调用[super dealloc];,只需要没有超级dealloc的方法。

Swift的更新

如果要在swift中编写代码,可以在 deinit 方法中删除观察者。

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