0

ゲームがクラッシュするバグに悩まされています。最初に「BAD_ACCESS」が表示されましたが、ゾンビオブジェクトを有効にすると、デバッガーは次のように言いました:

-[CCSprite setPosition:]: 割り当て解除されたインスタンス xxxx に送信されたメッセージ

クラッシュは、オブジェクト A と B が衝突したときに発生しますが、衝突がオブジェクト B の作成と同時に発生した場合にのみ発生します。

A と B の両方が衝突時に破壊される必要があります。これは、上記の状況を除いて問題なく機能します。私は Box2D を価値あるものとして使用しています。

より具体的な方法でエラーを追跡する方法はありますか? 私に問題を引き起こしているのがAかBかのように。

4

1 に答える 1

0

シミュレーターを使用している場合は、MallocStackLogging と NSDebugEnabled を有効にします。次に、このメッセージが表示されたら、問題のオブジェクトのプロセス ID とメモリ アドレスをメモします。次に、ターミナルで、 を使用malloc_history <pid> <memory_address>して、このアドレスの割り当てと割り当て解除の履歴を確認します。各 alloc と dealloc のスタック トレースが表示されます。最新の alloc はおそらく保持していないものを割り当てた場所、または最新の dealloc は誤って割り当てを解除した場所です。

malloc_history の man ページは次のとおりです。

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/malloc_history.1.html

于 2012-11-11T02:50:55.010 に答える