Я получаю необъявленную ошибку currentUpdateMethod (первое использование в этой функции).Переменная, к которой это относится, currentUpdateMethod, является переменной экземпляра типа SEL, объявленной в заголовочном файле.Поскольку сборка на симуляторе и запуск приложения работают должным образом, я считаю, что все настроено правильно.Эта ошибка появилась только сегодня - я тестирую на устройстве уже несколько дней без проблем.Я попытался очистить и убрать все цели.Я даже ввожу имя переменной в файл в xcode, и она автоматически заполняет переменную для меня.Что может привести к сбою компиляции устройства по этим переменным, но не по компиляции для симулятора?
Редактировать: Код следует.
Суперкласс:
#import "Deployable.h"
@interface Drawable : Deployable {
float currentDelta;
SEL currentUpdateMethod;
SEL currentAnimationMethod;
SEL currentBatchMethod;
float rotation;
}
- (id) init;
- (id) initWithActivationTime:(float)time;
- (int) updateWithDelta:(float)delta;
- (int) animate;
- (int) batch;
@end
Тогда класс проблемы:
#import "Drawable.h"
#import "Structures.h" //contains Vector2f declaration
@interface Player : Drawable {
Image *playerGraphic;
Vector2f position;
}
@property (nonatomic) Vector2f position;
- (id) initWithImage:(Image *)aGraphic andPosition:(Vector2f)aPosition;
- (void) setupInactiveState;
- (int) updateInactiveState;
- (int) animateInactiveState;
- (int) batchInactiveState;
- (void) setupActiveState;
- (int) updateActiveState;
- (int) animateActiveState;
- (int) batchActiveState;
@end
И его реализация, где генерируются ошибки:
#import "Player.h"
#import "AIEngine.h"
@implementation Player
@synthesize position;
- (id) initWithImage:(Image *)aGraphic andPosition:(Vector2f)aPosition {
self = [super init];
if(self) {
playerGraphic = [aGraphic retain];
position = aPosition;
}
return self;
}
- (int) deployWithScene:(MainScene *)newScene {
[super deployWithScene:newScene];
[self setupInactiveState];
return 1;
}
- (void) setupInactiveState {
currentUpdateMethod = @selector(updateInactiveState); //'currentUpdateMethod' undeclared (first use in this function)
currentAnimationMethod = @selector(animateInactiveState); //'currentAnimateMethod' undeclared (first use in this function)
currentBatchMethod = @selector(batchInactiveState); //'currentAnimateMethod' undeclared (first use in this function)
}
- (void) setupActiveState {
currentUpdateMethod = @selector(updateActiveState); //'currentUpdateMethod' undeclared (first use in this function)
currentAnimationMethod = @selector(animateActiveState); //'currentAnimateMethod' undeclared (first use in this function)
currentBatchMethod = @selector(batchActiveState); //'currentBatchMethod' undeclared (first use in this function)
}
@end
Просто повторюсь, эти шесть ошибок только выбрасываются при сборке для устройства.Когда я строю для симулятора, приложение собирается и работает нормально.
Edit2: я переключился только на LLVM, и ошибки не возникали.Я хотел бы выяснить источник проблемы, а не просто использовать другой компилятор.Есть идеи?