Я пишу игру iOS с помощью Sprite Kit (так что ориентирован на iOS 7+), и я столкнулся с проблемой при инициализации gameObject
(пользовательский класс).Невозможно сгенерировать NSUUID в инициализаторе класса - ошибка Apple Mach-O Linker
Если я попытаюсь установить UUID для ID игры, сборка завершится неудачей (см. Ниже для сообщения об ошибке); устранение вызова метода getUUID
устраняет проблему, поэтому я уверен, что в этом проблема.
Метод getUUID
находится внутри класса-помощника, который импортируется в Prefix.pch (и поэтому должен быть доступен для всего другого файла?).
Вот helpers.h
:
NSString *getUUID();
@interface helpers : NSObject
@end
И helpers.m
:
@implementation helpers
+(NSString *)getUUID
{
NSUUID *uuid = [NSUUID UUID];
NSString *uuidString = [uuid UUIDString];
return uuidString;
}
@end
Наконец, вот что gameObject.m
выглядит следующим образом:
static NSString *gameID = nil;
static NSDate *gameStarted = nil;
static NSNumber *venue = nil;
static NSNumber *timerDuration = nil;
static NSArray *players = nil;
static NSArray *playerMoves = nil;
static NSNumber *winner = nil;
@implementation gameObject
+(void) initialize
{
if(! gameID)
{
// generate a new guid for this game
gameID = getUUID();
}
}
@end
Ошибка я получаю:
Undefined symbols for architecture i386:
"_getUUID", referenced from:
+[gameObject initialize] in gameObject.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я проверил все общие исправления, указанные для этой ошибки на SO: мои настройки сборки архитектура устанавливается как arm64 arm7 arm7s
, файлы имеют свои цели установлены правильно, и все мои .m
файлов включены в сборке.
Любые идеи, в которых я ошибся? Я все еще очень новичок в Objective-C, поэтому все это в настоящее время для меня в темноте.
Отлично. Спасибо! Как я уже сказал, я все еще изучаю Objective-C/C++, поэтому на данный момент я делаю много глупых ошибок. Я учился на своих ошибках - медленно - благодаря таким полезным людям, как вы, так что Upvote и Accept на пути. – MassivePenguin