4

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

我读到了将 removeObserver 调用封装在 @try/@catch 块中的建议,我可能会采用这种方法,但我很好奇为什么我的 removeObserver 失败了。我认为这是因为(不知何故)未添加通知。(还有其他原因吗?我是 iOS 新手,不熟悉崩溃日志……)

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

谢谢!

4

2 回答 2

0

在 viewWillAppear 中调用 addObserver,通过调用 viewWillDisappear 中的 removeObserver 来平衡应该可以工作。

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

于 2016-12-24T20:34:55.707 回答
0

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

于 2016-12-24T21:22:18.067 回答