gpt4 book ai didi

cocoa - 第二次将观察者添加到 NSNotificationCenter 导致 EXC_BAD_ACCESS

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:26 27 4
gpt4 key购买 nike

假设场景:

在我的 viewDidLoad 方法中,我将 View Controller 添加为自定义通知的观察者(例如,通知 MyFooNotification)。稍后在加载 View 的过程中,通知被发布并且 Controller 处理它。当我离开 Controller 时,我不会(有意地)在 viewDidUnload 中移除观察者。下次打开 View 时,会再次添加观察者,但现在当发布观察到的通知时 - 我得到 EXC_BAD_ACCESS

谁能解释为什么会这样。

附言我知道我应该在 viewDidUnload 中删除它我只是对较低级别的细节感到好奇。

最佳答案

很可能是因为原始 View Controller 已被释放,因为它从导航堆栈(或类似堆栈)中弹出,但是 NSNotificationCenter仍然有一个引用。因此,当再次发布通知时,NSNotificationCenter尝试通知现在解除分配的 View Controller 并获取 EXC_BAD_ACCESS结果。

如果您曾经有一个对象将其自身添加到NSNotificationCenter作为观察者,您需要确保在 dealloc 期间将其删除.

关于cocoa - 第二次将观察者添加到 NSNotificationCenter 导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com