【问题标题】:Modules are disabled - but why?模块被禁用 - 但为什么呢?
【发布时间】:2015-12-26 19:00:06
【问题描述】:

我在一个项目中遇到了模块问题。在我使用@import 的地方,我得到“禁用模块时使用'@import'”。但是为什么他们被禁用了呢?

  • 在我的构建设置中,我将所有目标的“启用模块(C 和 Objective-C)”设置为“是”。
  • 将“自动链接框架”设置为是或否不会影响此(编译时)错误
  • 虽然该项目曾经有 Objective-C++ 和一些 C++ 代码,但现在没有了。是否有任何我因此而错过的项目设置?
  • 我在项目中没有更多的 .pch 文件,构建设置也没有提及它们
  • 我将 CocoaPods (0.39.0) 与“use_frameworks!”一起使用我希望@import 的模块来自那里。但是如果我将 '#import ' 或 '#import ' 替换为 '@import Foundation;' 也会发生同样的错误和“@import UIKit”,所以我希望这不相关
  • 该项目来自 iOS7 之前的版本,所以我可能错过了过去默认开启的设置
  • 该项目需要 iOS 8 并针对 iOS 9.2 构建。

我意识到加载第三方模块可能会减慢应用程序的加载时间。我正在使用 use_frameworks 转换为 CocoaPods!这样我就可以测量多少。如果还不错的话,我想使用,因为我计划将代码库的多个 swift-only 部分移动到他们自己的框架中(作为开源 coocapods)

我相信这不是关于 SO 的其他问题的重复,因为我已经浏览了我找到的问题(非常感谢this one),点击链接,重新观看了WWDC'13 session 404,并且阅读苹果论坛上的相关帖子,所以我相信我已经完成了我的功课。 :-)

【问题讨论】:

  • 您是否尝试过使用相关文件创建一个新项目并检查它是否在那里工作?如果它有效,我建议你比较构建设置中的每个字段

标签: ios module ios8 cocoapods xcode7


【解决方案1】:

在我的项目中,我有一个从 ObjC 桥接到 Swift 的桥接头,并且有一个生成的头文件用来从 Swift 桥接到 ObjC。事实证明,如果桥接标头引用了实现文件引用从 Swift 到 ObjC 的桥接文件的标头,则模块支持被禁用。所以要小心你在你的桥接文件中放了什么,当你导入生成的 -Swift.h 文件时要小心。

【讨论】:

    【解决方案2】:

    首先进入终端并输入xcode-select -p。应该说,/Applications/Xcode.app/Contents/Developer。如果没有,请输入sudo xcode-select -s /Applications/Xcode.app,然后按回车键并输入您的密码。

    如果这不能解决问题,请尝试删除项目的派生数据目录。转到项目视图并删除项目的派生数据。然后清理你的构建文件夹(command-shift-K)。运行分析 (command-shift-B) 并以蓝色和黄色解决任何问题。

    现在如果@import 仍然不起作用,请创建一个全新的 XCode 项目。验证 @import 是否在其中工作。如果没有,那么你的 XCode 安装可能搞砸了,或者你的 HDD 快死了。删除 XCode 并重新下载它,看看是否有效。重新启动到恢复分区,看看你是否有一些磁盘问题(不太可能,但是嘿)。

    如果@import 在新项目中有效,请尝试从当前项目中提取所有内容并将它们复制到新项目中。确保您拥有最新版本的 cocoapods,然后将您的 pod 全新安装到新项目中。

    如果所有这些都不能解决问题,您可能在某处留下了 @end 语句或缺少 } ...

    【讨论】:

    • 这是一个跨多台计算机的项目问题,xcode-select -p 都是您在上面写的。构建和分析没有提出任何建议。创建一个新项目支持模块就好了。所以到目前为止我知道的唯一选择是手动重新创建项目,但这并没有真正告诉我发生这种情况的原因。我已经手动区分了新项目和旧项目的项目设置,我找不到任何差异。
    • 很奇怪。我遇到了一些这样的事情,其中​​存在某种奇怪的 XCode 错误。可能是项目目录中的权限问题...检查控制台日志?此外,您是否选择了主要项目构建设置,或者选择了目标的构建设置,总是存在这个问题。有时我选择了主项目而不是构建目标,结果发现目标设置为覆盖项目全局设置(即目标的构建设置以粗体显示)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多