4

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。しかし、理由はわかりません。クラッシュするよりも最初のもので動作することがわかります。ここでの私のエラーは何ですか?手伝ってくれませんか!Sandro

編集:通知は約100個のオブジェクトによって受信されるため、問題はありますか?

4

2 に答える 2

10

私自身も同じ問題を抱えていました。これをクラスに追加すると問題が解決しました

- (void) dealloc 
{

  [[NSNotificationCenter defaultCenter] removeObserver:self];

}
于 2012-10-18T13:47:04.340 に答える
9

タイルオブジェクトの割り当てが解除されましたが、通知を受信するために通知センターに登録されています。これが期待どおりでない場合は、タイルの-deallocメソッドにブレークポイントを追加してみてください。

于 2010-09-26T11:46:06.550 に答える