Cocos2D ゲームを構築しています。このゲームでは、2 つの特定のスプライトが衝突した後 (単純なバウンディング ボックス手法によって)、次のように呼び出します。
[[CCDirector sharedDirector] replaceScene:gameOverScene];
ゲームオーバーのシーンに変わります。
すべてを含むゲーム オーバー シーンを初期化すると、ゲームがクラッシュし、ccArray.m
クラス内の次のメソッドに移動します。
void ccArrayRemoveAllObjects(ccArray *arr)
{ while( arr->num > 0 )
CC_ARC_RELEASE(arr->arr[--arr->num]);
}
メッセージ: スレッド 1: プログラムがシグナルを受信しました: "EXC_BAD_ACCESS"。
ブレークポイントを使用してデバッグを試みたところ、gameOver シーンが初期化されて表示の準備が整うとdealloc
、前のクラス (置換シーンと呼ばれるゲームプレイ クラス) のメソッドが呼び出され、その後このエラーがスローされることがわかりました。
私のupdate
方法:
-(void)update:(ccTime)dt
{
if (CGRectIntersectsRect(plane.boundingBox, enemy.boundingBox)) {
CCScene *gameOverScene = [GameOverLayer sceneWithWon:NO];
[[CCDirector sharedDirector] replaceScene:gameOverScene];
} }
私のdealloc
方法:
- (void) dealloc
{
[super dealloc];
[_monsters release];
_monsters = nil;
[mole release];
mole = nil;
[text release];
text = nil;
[mBG1 release];
mBG1 = nil;
[mBG2 release];
mBG2 = nil; }
なぜこれが起こっているのかわかりません。助けてください。
期待して感謝します。