好的,这是一个有趣的...我收到了
警告:Characters may not respond to 'addHeroType:atX:atY:fromMobTable'
虽然我可以看到正确定义的功能,但另一双眼睛呢?
以下是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(Characters.h
包含在heroFactory中):
[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable];
但是这行导致应用程序因未捕获的异常而终止 - 检查调试器我看到“NSObject无法识别选择器”
我确信这个问题很明显,为什么我看到一个警告,即如果它与定义匹配,那么Character类可能不会响应函数调用。
任何帮助非常感谢。
答案 0 :(得分: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];
当然,这取决于您的方法所需的范围。