私はARCを使用しており[[NSNotificationCenter defaultCenter] removeObserver:someObserver];
、オブザーバーのdealloc
.
NSNotificationCenter クラスリファレンスから
notificationObserver または addObserver:selector:name:object: で指定されたオブジェクトの割り当てが解除される前に、必ずこのメソッド (または removeObserver:name:object:) を呼び出してください。
NSNotificationCenter はオブザーバーを保持しません。
Q1:NSNotificationCenter
スレッドセーフですか?
場合によっては、オブザーバーの割り当てが解除され (通知センターからオブザーバーが削除され)、別のスレッドが同時に通知を投稿します。
ランダムなクラッシュが発生しましたが、これが原因だと思います。
Q2: このような状況はありえますか?
Q3: につながるのEXC_BAD_ACCESS
?
Q4: では[[NSNotificationCenter defaultCenter] removeObserver:someObserver];
、オブザーバーを呼び出しても安全dealloc
ですか?
Q5: 安全でない場合は、どこに電話すればよいremoveObserver:
ですか?