在类方法中调用父类给出了“匹配方法签名”警告

时间:2011-06-29 18:57:13

标签: objective-c warnings parent signature

我有一个类,它有两个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中的知识来解决。任何想法?

2 个答案:

答案 0 :(得分:1)

编译器告诉您它认为debugZoneScene.tetraCounterCCNode类型的对象,而不是ClassB。检查tetraCounterDebugZoneScene的声明和分配方式。

你可以通过施放来消除警告:

[(ClassB *)(debugZoneScene.tetraCounter) setTetras]; 

这告诉编译器你不关心它的想法,你确定该对象是ClassB。但是,这并没有解决实际问题。

答案 1 :(得分:0)

你的伪真的很适合你...没有关于setTetras签名的更多细节,你很难猜出代码中的错误^^

无论如何你#import TatraCounter类声明的标题,以便你编写这段代码的文件知道TetraCounter对象的可用方法(及其签名)?