43

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

4

1 回答 1

80

即使您使用ARC. 创建一个dealloc方法并在那里删除..

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

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

斯威夫特的更新

如果您正在快速编写代码,则可以在deinit方法中删除观察者。

deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
       }
于 2013-03-27T10:17:20.317 回答