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)标准库将包含在操作系统中,因此您不再需要它们。