Eim*_*tas 3 macos cocoa nsnotificationcenter ios observer-pattern
假设情景:
在我的viewDidLoad
方法中,我将视图控制器添加为自定义通知(例如,通知MyFooNotification
)的观察者.稍后在加载视图的过程中,通知将被发布,控制器将对其进行处理.当我离开控制器时,我不会删除观察者(故意)viewDidUnload
.下次打开视图时,观察者会再次添加,但现在当观察到的通知发布时 - 我明白了EXC_BAD_ACCESS
.
任何人都可以解释为什么会这样.
PS我知道我应该删除它,viewDidUnload
我只是对较低级别的细节感到好奇.
很可能是因为原始视图控制器已被释放,因为它是从导航堆栈(或类似的)弹出,但NSNotificationCenter
仍然有一个对它的引用.因此,当再次发布通知时,NSNotificationCenter
尝试通知现在解除分配的视图控制器并EXC_BAD_ACCESS
作为结果.
如果你曾经有一个对象本身添加到NSNotificationCenter
作为一个观察者,你需要确保你在删除它dealloc
.
归档时间: |
|
查看次数: |
1381 次 |
最近记录: |