我正在尝试将框架添加到我的项目中。我通过 Build Phases -> Link Binary With Libraries -> "+ button" 添加它们。添加它们后,它们会显示为红色,如果我尝试编译我的代码,我会得到:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ASIHTTPRequest", referenced from:
objc-class-ref in LoginViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
一段时间后,框架在 Build Phases 选项卡中恢复为黑色文本,但代码仍无法编译。这些文件在文件夹中都是完整的,并且位置是“相对于 SDK”,就像所有其他工作框架一样。我之前也遇到过这个问题,当时有问题的框架也保存在我的项目文件夹中,但这次不是这样。我已经阅读了关于这个主题的许多其他主题,但它们似乎是关于早期版本的 XCode。非常感谢您的帮助。
编辑:我正在尝试添加 MobileCoreServices 和 CFNetwork 框架。LoginViewController 是我项目的一部分。
编辑:无论是否包含框架,我都有同样的错误。我认为这是因为 XCode 在我包含它们之后由于某种原因找不到框架。这是我使用引用框架的类的地方。这是来自 LoginViewController
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: url];
[request setCompletionBlock:^{
NSLog(@"File downloaded.");
//NSData *data = [request responseData];
//do stuff with data
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"Error downloading file: %@", error.localizedDescription);
}];
[request startAsynchronous];
我正在尝试进行异步服务器调用以获取数据。
编辑:好的,事实证明我的项目中某些 .m 文件的目标成员资格没有被检查。修复此问题后,我仍然有类似的问题。这是我的新错误
Undefined symbols for architecture i386:
"_kReachabilityChangedNotification", referenced from:
+[ASIHTTPRequest registerForNetworkReachabilityNotifications] in ASIHTTPRequest.o
+[ASIHTTPRequest unsubscribeFromNetworkReachabilityNotifications] in ASIHTTPRequest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我对此进行了研究,唯一的原因似乎是缺少 MobileCoreServices 和 CFNetwork 框架。这就是我认为最初的问题引起的。我包含了框架,但 XCode 的行为就像它们不存在一样。