为什么doesn't Swift support static libraries?
我看到了这个解释,但我不明白这个推理。
当前运行时不附带操作系统,因此静态库将导致最终可执行文件中的多个运行时。对于与较新的OS或Swift的兼容性,静态链接的运行时将更难以修补。 。 。 。运行时间不断变化。我们需要动态链接它以便能够处理未来的前向部署问题。 - 乔格罗夫
https://twitter.com/owensd/status/555060783407591424
请解释。
答案 0 :(得分:6)
您是否注意到Swift应用程序大?这是因为整个Swift运行时嵌入在应用程序中的。 Swift被嵌入在应用程序中的库翻译成Objective-C。
这种令人讨厌的策略的原因是Swift本身仍然在变化和发展(Swift 2.2现在将在任何一天进行最终决定,再次彻底改变语言)。因此,Swift不能像Objective-C那样成为系统的一部分;它处于独立的变化中,速度和方式与系统更新无关。
这种状态使得与静态库的链接技术上非常困难。但动态链接是可能的,因为它是动态的。
稍后,可能在Swift 3进入决赛之后,该语言最终将被冻结,并将成为系统的一部分,就像Objective-C一样。然后静态库将更容易支持,比如Objective-C(Swift应用程序将变得更小!)。