2009-11-20 30 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

相關問題