奇妙なnsnotificationCenterクラッシュ
-
05-10-2019 - |
質問
やあみんな、私は別の問題です。今回はnsnotificationCenterを使用します。今ではクラッシュしていますが、数日前、通知を追加したとき、それは適切に機能しました。その間に、私はそれとは何の関係もないコードを追加しました...
約10x10タイルがあります。各タイルは、作成されるとすぐにオブザーバーとして自分自身を追加します。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerJumped) name:@"TestNot" object:nil];
そして、私のプレーヤークラスでは、ジャンプが終了するたびに、次のコードで通知を投稿します。
if (self.postNotifications == YES) {
//Also post the notification for all the Tiles.
[[NSNotificationCenter defaultCenter] postNotificationName:@"TestNot" object:self];
}
タイルでnslog()を使用すると、約3〜4枚のタイルが通知を受け取っていることがわかります。その後、アプリケーションはExc_bad_accessでクラッシュします。それは言う objc_msgSend() selector name: playerJumped
. 。しかし、私はその理由がわかりません。クラッシュするよりも最初のもので動作することがわかります。ここでの私のエラーは何ですか?手伝ってくれませんか!サンドロ
編集:通知は約100個のオブジェクトによって受信されるため、問題はありますか?
解決
タイルオブジェクトは扱われていますが、通知を受信するために通知センターに登録されています。これがあなたが期待しているものではない場合は、タイルの-deallocメソッドにブレークポイントを追加してみてください。
他のヒント
自分で同じ問題がありました。これをクラスに追加すると、問題が解決しました
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
所属していません StackOverflow