我有一个项目在 XCode 6 beta 中编译得很好,但现在,在 GM 中,它不会为 iOS 设备编译,并给出错误:
myController.m:393:9: No visible @interface for 'UIDevice' declares the selector 'initialize:'
在这一行:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
对于模拟器来说,它仍然编译得很好;我还尝试了这些修复:
- 清理了整个项目并重新构建。
- 从 ~/Library/Developer/XCode 中删除了所有派生数据
- 重新安装 XCode
- 检查 XCode 首选项并将命令行工具位置指向 XCode 6(XCode 5 仍安装在机器上,它指向那里)
...但没有运气。编译时出现同样的错误。
帮助!随着 iOS8 的临近,我们的时间紧迫,这确实令人头疼。
PS:我们还在工作区中使用 Cocoapods,这是物有所值的。
最佳答案
好吧,我费了好大劲才解决了这个问题。有问题的应用程序是一个 iOS 8 应用程序,带有嵌入式 Today Extension。
原来,在添加 Today Extension 时,XCode 添加了一个build设置:
'Enable Modules (C and Objective-C': YES
我的项目和包含的应用程序目标均未使用此build设置,但将其设置为 YES 会导致与尝试自动链接框架(并失败)有关的问题以及最终与头文件相关的各种相关奇怪错误消息。
问题变得更加复杂,因为有些源文件既是包含应用程序目标的成员,也是 Today Extension 目标的成员。
希望此信息对其他人有所帮助。
卡尔
关于ios - Xcode 6 GM 不会为 iOS 设备编译,但在模拟器中没问题 - 奇怪的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754324/