2010-02-17 82 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]; 

根据您的方法要求,当然,范围。

相关问题