2011-10-01 113 views
0

我得到了一個CCNode子類,它最終調用了位於其父類的函數。首先,我的課會做到這一點:函數沒有被調用

-(void)getTargetPosition { 
    Battle *myParent = (Battle *)self.parent; 
    position = [myParent getTargetPosition:@"ENEMY"]; 
} 

是父(一CCLayer)。

而這裏的代碼在父功能getTargetPosition

-(CGPoint)getTargetPosition:(NSString*)target { 
    NSLog(@"I AM RUNNING"); 
    CGPoint position; 
    if ([target isEqualToString:@"ENEMY"]) { 
     position = ccp(400,250); 
    }else if ([target isEqualToString:@"ALLY"]) { 
     position = ccp(240,160); 
    } 
    return position; 
} 

但有這樣的問題:getTargetPosition是,由於某種原因,從來沒有所謂。由於NSLog「I AM RUNNING」永遠不會顯示,因此我可以說。

任何想法爲什麼該方法不運行?

這些函數都已經在.h文件中聲明。 XCode不會引發任何警告/錯誤。

+0

你在哪裏調用' - (void)getTargetPosition'?因爲它也沒有被調用。 – Dair

+0

哦,我打電話給它。 – Voldemort

回答

2

是self.parent(也就是myParent)無?然後該方法不會被調用。

+0

是的,這幾乎可以肯定發生了什麼事情。這是Objective-C的一個「可愛」功能,在nil指針上的調用默默地被NO-OPed(並且返回零/ nil),同時拋出一個異常。這在某些情況下非常方便,但是會隱藏一大堆錯誤。 –

+0

啊。謝謝,那是問題所在。顯然,我正試圖在*之前將這個名字稱爲*場景的孩子。 – Voldemort