Ios 请解释始终嵌入Swift标准库的目的

Ios 请解释始终嵌入Swift标准库的目的,ios,swift,macos,Ios,Swift,Macos,我原以为我理解了总是嵌入Swift标准库的工作,但现在我感到困惑 我把一个MacOS应用程序的更新推到应用程序商店,一个用户说他在MacOS High Sierra上崩溃了。经过快速调查,似乎swift库丢失了,我的一个框架是用swift编写的(主应用程序是ObjC)。我将始终嵌入Swift标准库切换到是,重新上传了一个新版本,一切都很好 我现在已经上传了一个全新的iOS应用程序到Testflight,它是为ios9.3+构建的,并且记住了这个问题,所以我想我应该测试一下。 始终嵌入Swift标

我原以为我理解了
总是嵌入Swift标准库的工作,但现在我感到困惑

我把一个
MacOS
应用程序的更新推到应用程序商店,一个用户说他在
MacOS High Sierra
上崩溃了。经过快速调查,似乎swift库丢失了,我的一个框架是用swift编写的(主应用程序是
ObjC
)。我将
始终嵌入Swift标准库
切换到
,重新上传了一个新版本,一切都很好

我现在已经上传了一个全新的
iOS
应用程序到
Testflight
,它是为
ios9.3+
构建的,并且记住了这个问题,所以我想我应该测试一下。
始终嵌入Swift标准库
设置被设置为
NO
,这必须是
Xcode
默认设置。我通过
TestFlight
ios9.3.2
设备上下载了该应用程序,希望它在启动时崩溃,但没有,该应用程序运行得非常好

macOS
的一个主要版本上运行的
macOS
应用程序怎么会崩溃,而
iOS
应用程序在
iOS
的4个主要版本上运行得非常好

我是否完全误解了此设置的作用

什么时候应该使用
始终嵌入Swift标准库

-----编辑 我刚刚检查了
.app
的内容,似乎里面有swift库,这可以解释为什么它没有在iOS 9.3.2上崩溃。所以还有一个问题。当
始终嵌入swift标准库
设置为
时,为什么会有swift库?

我必须阅读几遍,以了解发生了什么:

始终嵌入Swift标准库(始终嵌入Swift标准库)

始终将Swift标准库嵌入目标产品中,即使目标产品不包含任何Swift代码

这意味着

  • 如果设置
    始终
    。。。若要
    YES
    ,库肯定会被嵌入
  • 如果将其设置为
    NO
    ,它们将不会始终嵌入-它们可能嵌入,也可能不嵌入,这取决于构建系统是否能够聪明地决定是否需要它们(取决于目标版本)

这是一种常见的误解:always的反面是notnever,它只是not aways(例如,有时如此)。

因此,如果使用swift代码或swift库构建应用程序,您最好总是将其设置为YES?否,如果使用swift代码,构建系统将知道它需要库(取决于目标iOS),因此,如果您将其设置为“否”,它也应该可以工作。请参阅文档:此设置仅适用于包装的产品,而不适用于独立的二进制产品。但结果会是相同的?如果您知道需要它们,不妨说“是”。是否有一个列表,列出哪些iOS/MacOS版本不再需要捆绑的swift库?关于由于Swift 5(可能还有macOS 10.14.4、iOS 12.2、tvOS 12.2、watchOS 5.2)标准库将包含在操作系统中,因此您不再需要它们。