这是“构建选项”下的新设置。它有什么作用?我似乎找不到任何关于它的文档。我的猜测是:它是否必须YES
在混合的 Objective-C/Swift 应用程序中设置为告诉 Xcode 链接到 Swift 运行时?
3 回答
对于链接,它不需要是Yes 。此设置仅适用于当您拥有依赖于混合源或纯 Swift 目标的纯 Objective-C 目标时。
描述:
启用此设置以指示嵌入在目标产品中的内容包含 Swift 代码,以便可以将标准 Swift 库包含在产品中。
同样在 Beta 7 的发行说明中:
将 Swift 标准库嵌入捆绑包中的构建步骤现在仅针对应用程序产品类型运行,并且仅当应用程序本身(独立于任何嵌入内容)包含 Swift 源文件时。当构建一个本身不包含 Swift 源文件,但嵌入了其他包含 Swift 代码的内容(如框架、XPC 服务、应用程序扩展等)的应用程序时,您必须设置构建设置“Embedded Content Contains Swift Code”(EMBEDDED_CONTENT_CONTAINS_SWIFT) . 这样,Swift 库将包含在应用程序中。
问候
根据在 Objective-C 中使用 Swift 嵌入内容
当且仅当您正在构建一个应用程序并且该应用程序本身包含 Swift 源文件时,Swift 标准库才会被复制到一个包中
如果您正在构建的应用程序不使用 Swift 但嵌入了框架等内容,那么 Xcode 将不会在您的应用程序中包含这些库。结果,您的应用程序将在启动时崩溃
要解决此问题,请将 Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) 构建设置设置为 YES。此构建设置指定目标产品是否嵌入了带有 Swift 代码的内容,当设置为 YES 时,它会告诉 Xcode 在您的应用程序中嵌入 Swift 标准库
我不认为 Swift 和 Objective-C 之间需要通用的互操作性。就像添加 Swift 代码和编辑桥接头一样简单。
如果你看到任何关于 iOS 扩展的文档,术语都会提到“嵌入式”很多:嵌入式内容、嵌入式框架等。因为扩展的组织、构建和运行与普通应用程序完全不同,所以我不会很惊讶有这样一个与他们有关的构建设置。