viewWillAppear / viewWillDisappear中的addObserver / removeObserver

时间:2016-12-24 20:19:44

标签: ios nsnotificationcenter addobserver

我在viewWillAppear中调用addObserver,在viewWillDisappear中调用removeObserver。 似乎工作正常。但是,在Xcode崩溃日志中,当我调用removeObserver时,我收到一些客户崩溃的报告(昨天21次崩溃......)。我没有任何客户报告说他们崩溃了,所以我认为这是相对断断续续的。

我读了一个建议,将removeObserver调用封装在@ try / @ catch块中,我可以使用它,但我很好奇为什么我的removeObserver失败了。我认为这是因为(不知何故)通知没有被添加。 (还有其他原因吗?我是iOS新手,也是崩溃日志的新手......)

FWIW,我只从一个viewWillAppear调用addObserver并在一个viewWillDisappear中删除它。我试图复制这个问题,并且从未看到(在NSLog消息中)调用viewWillDisappear而没有首先调用viewWillAppear。

谢谢!

2 个答案:

答案 0 :(得分:0)

在viewWillAppear中调用addObserver,在viewWillDisappear中调用removeObserver应该可以正常工作。

您是在viewWillAppear中添加多个单独的观察者,然后在viewWillDisappear中删除所有观察者?最好按名称删除单个观察者,因为系统也可以使用通知中心。

答案 1 :(得分:0)

尝试在viewDidDissapeared中删除您的观察者。您可能遇到视图控制器生命周期问题。