我正在使用 Sprite Kit(因此针对 iOS 7+)编写 iOS 游戏,并且在初始化gameObject
(自定义类)时遇到了问题。
如果我尝试为游戏 ID 设置 UUID,则构建失败(请参阅下面的错误消息);删除对该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)
我已经检查了针对此错误提到的所有常见修复:我的构建设置架构设置为arm64 arm7 arm7s
,文件的目标设置正确,并且我的所有.m
文件都包含在构建中。
有什么想法我哪里出错了吗?我对Objective-C还是很陌生,所以目前所有这些对我来说都是在黑暗中挣扎。