1

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; }

なぜこれが起こっているのかわかりません。助けてください。

期待して感謝します。

4

2 に答える 2