2012-09-09 2 views
0

Все еще работаю над своей игрой, и ель каждой трудности у меня есть «gameSpeed», это устанавливается в зависимости от сложного выбора.повторяющиеся символы

Однако при попытке запустить мое приложение, я получаю следующее сообщение об ошибке:

duplicate symbol _gameSpeed in: 
/Users/Ashley/Library/Developer/Xcode/DerivedData/Whack-etfeadnxmmtdkgdoyvgumsuaapsz/Build/Intermediates/Whack.build/Debug-iphonesimulator/Whack.build/Objects-normal/i386/TimedGameLayer.o 
/Users/Ashley/Library/Developer/Xcode/DerivedData/Whack-etfeadnxmmtdkgdoyvgumsuaapsz/Build/Intermediates/Whack.build/Debug-iphonesimulator/Whack.build/Objects-normal/i386/GameInfo.o 
ld: 1 duplicate symbols for architecture i386 
collect2: ld returned 1 exit status 
Command /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1 

Я только с помощью gameSpeed ​​в одном месте.

, который находится здесь:

[self schedule:@selector(tryPopMoles:) interval:gameSpeed]; 

это в моем TimedGameLayer.m

gameSpeed ​​вар в моем GameInfo.h

импортировать заголовок следующим образом:

#import "GameInfo.h" 

My GameInfo.h выглядит так:

@interface GameInfo : NSObject 
+(void)setupGame:(enum GameType)type withArg2:(enum GameDifficulty)difficulty; 
+(void)resetGame; 
+(void)togglePause; 

@end 

//Game Type 
enum GameType gameType; 
enum GameDifficulty gameDifficulty; 

//Release Version 
NSString *version; 

//Settings 
int gameSpeed = 1.5; 

//Stats 
int touches = 0; 
int score = 0; 
int totalSpawns = 0; 

//usables 
bool gamePaused = FALSE; 

typedef enum GameType { 
    GameTypeClassic = 0, 
    GameTypeUnlimited, 
    GameTypeTimed, 
    GameTypeExpert, 
} GameType; 

typedef enum GameDifficulty 
{ 
    GameDifficultyEasy = 0, 
    GameDifficultyMedium, 
    GameDifficultyHard, 
} GameDifficulty; 

Моя функция setupGame (которая находится в моем файле GameInfo.m) выглядит следующим образом:

+(void)setupGame:(enum GameType)type withArg2:(enum GameDifficulty)difficulty 
{ 
    gameType = type; 
    gameDifficulty = difficulty; 

    switch(gameDifficulty) 
    { 
     case GameDifficultyEasy: 
      gameSpeed = 1.5; 
      break; 
     case GameDifficultyMedium: 
      gameSpeed = 1.0; 
      break; 
     case GameDifficultyHard: 
      gameSpeed = 0.5; 
      break; 
    } 
} 

Im полностью потерял здесь ...

Любые идеи?

Благодаря

ответ

1

На основании ваших комментариев ниже, и ваш пример кода:

У вас есть ряд переменных, объявленных в .h файле, и .h файл включен в несколько раз, так что у вас есть несколько переменные с тем же именем. Вы должны создать файл constants.h и constants.m и объявить этот список как константы в файле констант.

constants.h: 
extern const int gameSpeed; 

constants.m: 
const int gameSpeed = 1; 

Кстати, вы объявляя gameSpeed ​​как межд но присвоить значение поплавка к нему, так gameSpeed ​​будет равен 1. Используйте тип поплавка вместо этого.

+0

Я включаю его в двух местах. 1) чуть выше моего @implementation TimedGameLayer вместе с другими моими импортами. и 2) в моей GameInfo.m с другими моими импортными – Ryuk

+0

Вы случайно не импортируете файл .m? – Asciiom

+0

Нет, я проверил. Если у вас есть TeamViewer, вы можете посмотреть :) – Ryuk

Смежные вопросы