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)

这清楚地表明以下两行中的第二行正在崩溃:

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

我知道当用户触摸相应的 CCMeanuItemImage 时似乎发生了崩溃,如果用户触摸它,而我们更改它的正常 et 选择的图像,是否有问题?这是改变形象的正确方式吗(我在游戏中做了几次)?

谢谢你的想法

4

2 回答 2

0

有问题的调用是 initWithFile,因为在此之后它被称为 handlerFailureInMethod。
如果问题出在 initWithFile 上,请确保您证明的文件不可用。
检查 self.zombieImage 是否是一个有效的图像文件名。我的猜测是僵尸图像不是文件名(NSString),而是图像(UIImage),所以如果是这样的话,用它的文件名替换图像。

于 2012-12-09T11:45:02.010 回答
0

您的崩溃与触摸菜单项有关,只是因为您在单击按钮时调用的方法中所做的事情。

从崩溃报告中您可以看到导致崩溃的调用堆栈。它说 CCSprite 类在第 201 行有断言(因为 cocos2d 是开源的,你可以检查这一行,看看什么样的断言被破坏了),这是在第 1363 行的方法 makeZombie 中从你的 Player 类调用的(您确定需要这么大的课程吗?我假设您在单个课程中放置了太多逻辑)。

所以检查断言行并检查 makeZombie 方法中的行。

于 2012-12-09T11:01:12.097 回答