Получение ошибки NSInternalInconsistencyException Аргумент должен быть ненулевым

Я запускаю этот код:

- (void)unitButtonButtonTapped:(id)sender {
    [_label setString:@"Last button: Unembossed square"];
    MilitaryUnits *target = nil;
    target = [Peasants militaryUnits];
    target.position = ccp(100, 450);
    [self addChild:target];
}

И я получаю эту ошибку: * Завершение работы приложения из-за необработанного исключения "NSInternalInconsistencyException", причина: "Аргумент должен быть не нулевым"

Это мои файлы классов .h и .m.

#import "cocos2d.h"

@interface MilitaryUnits : CCSprite {
    int _experience;
    int _number_of_units;
    int _stamina;
    int _armor_level;
    int _weapon_levell;
}

@property (nonatomic, assign) int experience;
@property (nonatomic, assign) int number_of_units;
@property (nonatomic, assign) int stamina;
@property (nonatomic, assign) int armor_level;
@property (nonatomic, assign) int weapon_levell;

@end

@interface Peasants : MilitaryUnits{

}
+(id)militaryUnits;

@end

#import "MilitaryUnits.h"

@implementation MilitaryUnits

@synthesize number_of_units = _number_of_units;
@synthesize stamina = _stamina;
@synthesize experience = _experience;
@synthesize armor_level = _armor_level;
@synthesize weapon_levell = _weapon_levell;

@end

@implementation Peasants

+ (id)militaryUnits {

    Peasants *militaryUnits = nil;
    if ((militaryUnits = [[[super alloc] initWithFile:@"Target.png"] autorelease])) {
    }
    return militaryUnits;

}

@end

Обратите внимание, я использую кокосы 2d


person TheLivingForce    schedule 02.07.2012    source источник
comment
Пожалуйста, опубликуйте полный errormrssage.   -  person    schedule 02.07.2012
comment
Я не вижу ни одного объявления initWithFile в вашем файле интерфейса .h.   -  person Michael Dautermann    schedule 02.07.2012
comment
Нам нужна трассировка стека, чтобы правильно диагностировать проблему. Трассировка стека выглядит как список функций/методов и должна появиться непосредственно перед опубликованной вами ошибкой.   -  person Tom Dalling    schedule 02.07.2012
comment
Для меня подозрительной частью является super alloc в + (id) militaryUnits; Я не думаю, что это будет определено. Попробуйте заменить его на MilitaryUnits alloc.   -  person Kevin Grant    schedule 02.07.2012


Ответы (1)


мне кажется, что ваш спрайт нулевой, т.е. файл "Target.png" не найден. Убедитесь, что имя файла имеет тот же регистр (в поисковике), который вы указали в своем коде, и что файл включен в членство цели в Xcode.

Также

+ (id)militaryUnits {

    Peasants *militaryUnits;
    if ((militaryUnits = [[[super alloc] initWithFile:@"Target.png"] autorelease])) {
        return militaryUnis;
    } else {
        CCLOGERROR(@"your favorite whine style for errors like file not found");
        return nil;
    }  
}
person YvesLeBorg    schedule 02.07.2012
comment
Я забыл, что это за проект, в чем была ошибка или о чем я думал, но спасибо за ответ на вопрос :) - person TheLivingForce; 21.10.2016