我有一个在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扩展时,XCode添加了一个构建设置:

    “启用模块(C和Objective-C):是

    我的项目和包含我的应用程序目标均未使用此构建设置,但是将其设置为YES会导致尝试自动链接框架(并失败)以及最终与头文件相关的各种相关奇数错误消息。

    由于源文件既是包含应用程序的目标,又是Today Extension的目标的成员,因此问题变得更加复杂。

    希望此信息对其他人有帮助。

    卡尔

    09-16 08:01
    查看更多