【问题标题】:Cocos3D - 'May not respond' warning on dot notationCocos3D - 点符号上的“可能不响应”警告
【发布时间】:2014-01-20 23:12:01
【问题描述】:

我正在使用 Cocos3D,这个函数给了我一个“可能没有响应”的警告:

[CClayer.CC3scene someFunctionFromCC3scene];

我知道解决此问题的一种方法是在CCLayer 中有一个Function 以使CC3scene 调用someFunctionFromCC3scene。但是还有其他方法可以做到这一点吗?谢谢!

【问题讨论】:

    标签: ios7 cocos3d


    【解决方案1】:

    您更有可能没有导入相应的标头。例如#import "CC3Scene.h"。我想如果CC3scene 属性的返回类型是id 而不是实际的类,就会发生这种情况。

    或者编译器对此是正确的,当你运行它时它会因“不响应选择器”而崩溃。在这种情况下,CC3Scene 没有实现someFunctionFromCC3scene 选择器。检查拼写和参数,当然该类实际上实现了该选择器并在@interface 中声明了它。

    【讨论】:

    • 我尝试了#import 和@class CC3scene,但问题仍然存在。
    【解决方案2】:

    从您的示例来看,有几件事可能会出错:

    您可能会将CCLayerCC3Layer 混淆。 CC3LayerCCLayer 的子类,支持显示 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} 并且函数内部的代码没有被执行。
    • 我另辟蹊径,由 NSNotificationCenter 管理。但仍然想知道是什么导致了这个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多