質問

やあみんな、私は別の問題です。今回は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];

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top