如何修复“对象”可能无法响应Cocos2d中的“方法”警告

时间:2009-11-20 16:46:27

标签: iphone cocoa-touch cocos2d-iphone

在cocos2d中,我正在尝试在CocosNode的Parent上调用一个方法。该应用程序工作正常,但我得到一个'对象'可能无法响应'方法'警告。父是一个子类Cocos2d层,所以我猜我需要以某种方式转换父,但这会产生致命的错误。

方法就像这样

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){
    [parent showChooser]; 
    return kEventHandled;
}

我尝试添加以下内容,但没有成功......

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){
    if([parent respondsToSelector:@selector(showChooser)]){
        [parent showChooser];
    }
    return kEventHandled;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

假设showChooser是在您的子类上定义的方法,您应该只能写:

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){
    [(YourLayerSubclass*)parent showChooser];
    return kEventHandled;
}

或者,如果你想要更安全一点:

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){
    if( [parent isKindOfClass:[YourLayerSubclass class]] ) {
        YourLayerSubclass *subclassParent = (YourLayerSubclass*)parent;
        [subclassParent showChooser];
        return kEventHandled;
    }
}