我正在使用ARC,我在观察者的dealloc方法中调用[[NSNotificationCenter defaultCenter] removeObserver:someObserver];
。
一定要在notificationObserver或任何在addObserver:selector:name:object:中指定的对象被释放之前调用此方法(或removeObserver:name:object:)。
NSNotificationCenter不会保留观察者。
Q1: NSNotificationCenter
是否线程安全?
如果观察者正在被释放(并从通知中心中移除观察者),并且另一个线程同时发布通知。
我遇到了随机崩溃,我怀疑这是问题所在。
Q2: 这种情况可能发生吗?
Q3: 是否会导致EXC_BAD_ACCESS
?
Q4: 那么,在观察者的dealloc
方法中调用[[NSNotificationCenter defaultCenter] removeObserver:someObserver];
是安全的吗?
Q5: 如果不安全,我应该在哪里调用removeObserver:
?
dealloc
方法中执行此操作,我不知道你的问题出在哪里... - Guillaume