【问题标题】:Game crashes with NSLog errors (cocos2d iPhone) [closed]游戏因 NSLog 错误而崩溃(cocos2d iPhone)[关闭]
【发布时间】:2011-08-31 20:11:54
【问题描述】:

在我的游戏中,我在 GameLayer 中创建了许多需要在 Level1 中调用的方法。我不知道为什么,但是当我单击开始时,我在控制台中收到此错误,并且游戏崩溃了。

Assertion failure in -[CCTimer initWithTarget:selector:interval:]

接着

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Signature not found for selector - does it have the following form? -(void) name: (ccTime) dt'

我在这里上传了 GameLayer.h 和 .m:http://www.4shared.com/file/O_1utrRj/undefined.html

注意:Level1(我称之为方法的地方)在 GameLayer 中。

【问题讨论】:

  • 您的代码无法在我的 XCode 上编译。
  • 我只包含了有问题的 2 个文件,没有包含 Helloworld、资源等
  • 我阅读了您的源代码(部分原因是您确实发布了整个 XCode 项目)。这对 StackOverflow 来说太宽泛了,甚至对代码审查姐妹网站来说也是如此。
  • 你这是什么意思?这个问题太复杂了?
  • 你不应该让别人去阅读你项目的代码。您应该寻找错误区域并将其显示在您的问题中。

标签: iphone cocos2d-iphone crash assertion


【解决方案1】:

您编写了对不存在的方法 moveBunnyM 的调用。当它被有效调用时,您的应用程序会崩溃。

所写的是一个方法 moveBunnyM:(float) delta

替换第 173 行:

[ptr moveBunnyM];

[ptr moveBunnyM:(float)dt]; 

因为您从一个名为 moveBunny 的方法调用此方法,该方法恰好采用 dt 参数

这将消除一次崩溃,但它表明您的源代码存在严重的逻辑问题。

建议:不要将多个@implementation 放在同一个 .m 文件中。创建多个文件,每个类一个。 Level1应该在Level1.h中定义,导入Cocos.h,在Level1.m中实现,导入Level1.h。

【讨论】:

  • 非常感谢,这更有意义。我的错。我仍然收到控制台错误并崩溃。有什么我想念的吗?谢谢
  • 我正在查看您的项目(只是因为我想看看紫色兔子会发生什么)。
  • 哈哈好的,谢谢。应该发生的是,它是英雄,可以用操纵杆控制,也可以用另一个操纵杆发射弹丸。我已经尝试过碰撞检测,但由于这个原因还没有进行测试。编辑 - 实施是不好的做法,还是有什么问题?我发现它更容易,更方便,但如果它是一个问题,我会改变它。此外,我刚刚上传的 GameLayer 文件已经更新,与我之前发布的整个项目的文件不同。感谢您到目前为止的帮助
  • 好的,我去拿新版本看看。对于实施,这是不好的做法。正如您所注意到的,它可以工作,但是如果您在一个文件中有两个类别和三个类,并且您在多个地方都这样做呢?您的项目很快就会变得难以管理。
  • 感谢您的建议和支持,我会改的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2019-09-06
相关资源
最近更新 更多