2009-11-20 56 views
0

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

的方法是这样的

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

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

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

任何想法?

回答

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; 
    } 
} 
+0

优秀。谢谢。如果可以的话,为什么第二种方案更安全? – gargantuan 2009-11-20 17:02:39

+0

因为你明确地证实'parent'是你期望的类的一个实例,而不是假设它是。 – 2009-11-20 17:18:06

+0

......如果这种假设是错误的,可能会导致崩溃。结束Otto的判决。 ;) – LearnCocos2D 2010-07-30 21:11:15

相关问题