我有一个类,它有两个A和B类。在A类的方法中,我试图调用B类方法
假设父类是debugZoneScene,debugZoneLayer是A类,tetraCounter是B类。
这是debugZoneLayer(A类)的方法:
-(void) getHeroVel {
DebugZoneScene *debugZoneScene = (DebugZoneScene*)self.parent;
[debugZoneScene.tetraCounter setTetras];
}
它调用方法,但我收到警告:
' - [DebugZoneLayer getHeroVel]': 'CCNode'可能无法响应'-setTetras'(没有匹配方法签名的消息将被假定为返回'id'并接受'...'作为参数。)
我试过谷歌搜索,但我找不到任何与我的问题完全相关的东西。我正在使用Cocos2D,但我认为这个问题没有任何关系直接与之相关,并且仍然可以通过Objective C中的知识来解决。任何想法?
答案 0 :(得分:1)
编译器告诉您它认为debugZoneScene.tetraCounter
是CCNode
类型的对象,而不是ClassB
。检查tetraCounter
中DebugZoneScene
的声明和分配方式。
你可以通过施放来消除警告:
[(ClassB *)(debugZoneScene.tetraCounter) setTetras];
这告诉编译器你不关心它的想法,你确定该对象是ClassB
。但是,这并没有解决实际问题。
答案 1 :(得分:0)
你的伪真的很适合你...没有关于setTetras签名的更多细节,你很难猜出代码中的错误^^
无论如何你#import TatraCounter类声明的标题,以便你编写这段代码的文件知道TetraCounter对象的可用方法(及其签名)?