终止应用程序由于未捕获的异常“NSInvalidArgumentException
问题描述:
确定这里是一个有趣的...我收到 警告: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无法识别选择器”
我相信问题是为什么我看到警告字符类的奇怪可能不会对写入的函数调用作出响应,即使它与该定义完全匹配。
任何帮助极大的赞赏。
答
-(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];
根据您的方法要求,当然,范围。