0

クラッシュ ログ ファイルを取得します。アーカイブで XCode を分析すると、問題のあるコード行が表示されます。

Date/Time:       2012-12-08 23:48:08.930 +0100
OS Version:      iPhone OS 5.1.1 (9B206)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x31a4088f __exceptionPreprocess + 163
1   libobjc.A.dylib                 0x3188b259 objc_exception_throw + 33
2   CoreFoundation                  0x31a40789 +[NSException raise:format:] + 1
3   Foundation                      0x374c73a3 -[NSAssertionHandler     handleFailureInMethod:object:file:lineNumber:description:] + 91
4   Killer                          0x0017ed35 -[CCSprite initWithFile:] (CCSprite.m:201)
5   Killer                          0x0017e419 +[CCSprite spriteWithFile:] (CCSprite.m:93)
6   Killer                          0x00123101 -[Player makeZombie] (Player.m:1363)
7   Killer                          0x00105a51 -[PlayScene endOfKilling:] (PlayScene.m:1438)

これは、次の 2 行のうち 2 行目がクラッシュしていることを明確に示しています。

NSLog(@"images %@ %@",self.zombieImage,self.zombieImageDown); 
[self.characterSprite setNormalImage:[CCSprite spriteWithFile:self.zombieImage]];

ユーザーが対応する CCMeanuItemImage に触れているときにクラッシュが発生したように見えることはわかっていますが、通常の画像と選択した画像を変更しているときに、ユーザーがそれに触れている場合に問題はありますか? これはイメージを変更する正しい方法ですか (ゲーム中に何度か行います) ?

アイデアをありがとう

4

2 に答える 2

0

ボタンをクリックすると呼び出されるメソッドで何をしているのかという理由だけで、メニュー項目に触れることでクラッシュが発生します。

クラッシュ レポートから、クラッシュの原因となったコール スタックを確認できます。1363 行目の makeZombie メソッドで Player クラスから呼び出された 201 行目の CCSprite クラスにアサーションがあったことを示しています (cocos2d はオープン ソースであるため、この行を確認するとどのようなアサーションが壊れているかを確認できます)。 (本当に大きなクラスが必要ですか?単一のクラスにあまりにも多くのロジックを配置していると思います)。

したがって、アサーション行を確認し、makeZombie メソッドの行を確認してください。

于 2012-12-09T11:01:12.097 に答える
0

問題のある呼び出しは initWithFile です。この後、handlerFailureInMethod が呼び出されるためです。
問題が initWithFile にある場合は、証明しているファイルが利用できないことを確認してください。
self.zombieImage が有効な画像ファイル名であることを確認してください。私の推測では、ゾンビ画像はファイル名 (NSString) ではなく画像 (UIImage) であるため、その場合は画像をそのファイル名に置き換えます。

于 2012-12-09T11:45:02.010 に答える