ios - "Defines Module = Yes"测试项目的行为

标签 ios xcode

我的 Swift/Obj-C 混合项目设置有两个目标:MyProjectMyProjectTests为了编写单元测试(使用 XCTest ),我对主要目标( MyProject )build设置进行了以下配置:

Enable testability = Yes
Defines module = Yes
这很好,但我想知道当我指定 Defines module = Yes 时实际发生了什么.
是否指定 Defines module = Yes意思是:
  • 为目标创建了一个框架,或者至少是一个模块映射,还是为目标创建了一个总括标题?
  • 如果是这种情况,即至少会生成临时构建文件以使主要目标看起来像一个模块,那么它们通常位于哪里?在 DerivedData ?

  • 或者 Xcode 是否对主要项目目标进行了一些特殊处理,例如打开 Defines Module = Yes flag 在文件系统方面没有任何作用,但仍允许将主项目目标作为(可测试的)模块导入测试目标中?
  • 最佳答案

    让应用同时使用 Swift 和 Objective-C,可能是一个微妙的过程。如果你想要一个混合项目,你必须采用模块。将旧的 Objective-C 代码引入 Swift 项目时,这意味着将“定义模块”(DEFINES_MODULE)build设置设置为 YES在框架目标中。这指示 Xcode 安装 module.modulemap文件(可能是 module.private.modulemap )在框架中的标题旁边。 Objective-C 框架需要定义一个模块供 Swift 使用。

    来源:Big Nerd Ranch

    关于ios - "Defines Module = Yes"测试项目的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51927138/

    相关文章:

    ios - iOS 如何处理 URL 方案重复?

    ios - 如何从 Swift 更新 Parse 中的数组

    ios - 将 json 数据存储在 TableView 中的交替单元格中

    iphone - 如何强制 iOS 立即更改背景颜色?

    ios - 如果我快速滚动 tableView,则返回 nil

    ios - 如何在 unbutton 上的 Web 服务中发布 uitextfield 数据

    ios - ImageView 将信息从类传递到其他类

    php - 空间 NSURL 连接

    iphone - [[NSBundle mainBundle] loadNibnamed :owner:options:] 崩溃

    ios - Xcode 错误地将 Storyboard 元素绑定(bind)到 Exit