Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException - PullRequest
0 голосов
/ 18 февраля 2010

Хорошо, вот интересный ... Я получаю предупреждение: 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 может не отвечать на вызов функции, как написано, даже если он совпадает с определением.

Любая помощь с благодарностью.

1 Ответ

4 голосов
/ 18 февраля 2010
-(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];

Конечно, в зависимости от области применения вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...