Sprite Kit (iOS 7+를 타겟팅)를 사용하여 iOS 게임을 작성 중이며 gameObject
(사용자 정의 클래스)을 초기화 할 때 문제가 발생합니다.클래스 이니셜 라이저에서 NSUUID를 생성 할 수 없습니다. Apple Mach-O Linker 오류
게임의 ID로 UUID를 설정하려고하면 빌드가 실패합니다 (아래 오류 메시지 참조). getUUID
메서드 호출을 제거하면 문제가 해결되므로 문제가있는 곳을 확실히 알 수 있습니다.
getUUID
메서드는 Prefix.pch에서 가져온 도우미 클래스 안에 있으므로 다른 모든 파일에서도 사용할 수 있어야합니다. 여기, 마지막으로
@implementation helpers
+(NSString *)getUUID
{
NSUUID *uuid = [NSUUID UUID];
NSString *uuidString = [uuid UUIDString];
return uuidString;
}
@end
처럼 gameObject.m
보이는 내용은 다음과 같습니다 :
NSString *getUUID();
@interface helpers : NSObject
@end
그리고 helpers.m
: 여기
helpers.h
입니다입니다
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