【发布时间】:2014-01-20 23:12:01
【问题描述】:
我正在使用 Cocos3D,这个函数给了我一个“可能没有响应”的警告:
[CClayer.CC3scene someFunctionFromCC3scene];
我知道解决此问题的一种方法是在CCLayer 中有一个Function 以使CC3scene 调用someFunctionFromCC3scene。但是还有其他方法可以做到这一点吗?谢谢!
【问题讨论】:
我正在使用 Cocos3D,这个函数给了我一个“可能没有响应”的警告:
[CClayer.CC3scene someFunctionFromCC3scene];
我知道解决此问题的一种方法是在CCLayer 中有一个Function 以使CC3scene 调用someFunctionFromCC3scene。但是还有其他方法可以做到这一点吗?谢谢!
【问题讨论】:
您更有可能没有导入相应的标头。例如#import "CC3Scene.h"。我想如果CC3scene 属性的返回类型是id 而不是实际的类,就会发生这种情况。
或者编译器对此是正确的,当你运行它时它会因“不响应选择器”而崩溃。在这种情况下,CC3Scene 没有实现someFunctionFromCC3scene 选择器。检查拼写和参数,当然该类实际上实现了该选择器并在@interface 中声明了它。
【讨论】:
从您的示例来看,有几件事可能会出错:
您可能会将CCLayer 与CC3Layer 混淆。 CC3Layer 是 CCLayer 的子类,支持显示 3D 场景。确保您正在实例化 CC3Layer。
如果您确实在使用CC3Layer 并且CC3Scene 属性(实际上是cc3Scene)正在返回CC3Scene 的实例,那么,正如LearnCocos2D 所示,验证您正在调用的方法确实存在在CC3Scene 类中。如果您在此处提供具体的方法名称,我可以提供进一步的帮助。
如果someFunctionFromCC3Scene 实际在您的自定义子类中定义和实现,那么您应该在调用该方法之前将CC3Scene 实例转换为您的自定义子类:
[((MyCC3Scene*)aCC3Layer.cc3Scene) someFunctionFromMyCC3Scene];
...比尔
【讨论】:
[info] Deallocating TepaScene 'Unnamed':22 on thread <NSThread: 0x9f0afa0>{name = (null), num = 1} 并且函数内部的代码没有被执行。