2010-02-17 176 views
0

確定這裏是一個有趣的...我收到 警告:Characters may not respond to 'addHeroType:atX:atY:fromMobTable'終止應用程序由於未捕獲的異常「NSInvalidArgumentException

雖然我有正常儘量定義的功能,我可以看到這麼怎麼樣另一對眼睛?

這裏是Characters.h

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable; 

定義下面是在Characters.m

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable 

的功能,這裏是我的另一個類調用heroFactory使得包括在heroFactory通話(Characters.h ):

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

但是這一行導致應用程序終止,因爲未捕獲的異常 - 檢查調試器我看到「NSObject無法識別選擇器」

我相信問題是爲什麼我看到警告字符類的奇怪可能不會對寫入的函數調用作出響應,即使它與該定義完全匹配。

任何幫助極大的讚賞。

回答

4
-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable 

這被聲明爲實例方法。

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

但是你把它作爲類的方法調用它。

因此,要麼,申報方法爲類方法的

+(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable 

或者調用它的實例

Characters *instance = [[[Characters alloc] init] autorelease]; 
[instance addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

根據您的方法要求,當然,範圍。

相關問題