将 Swift 添加到项目中会大大增加规模。如何以及何时可以避免

Posted

技术标签:

【中文标题】将 Swift 添加到项目中会大大增加规模。如何以及何时可以避免【英文标题】:Adding Swift to project increase size substantiously. How and when can it be avoided 【发布时间】:2015-02-02 10:33:22 【问题描述】:

我有一个用 Objective-C 编写的小应用程序。它大约有 3 Mb 大小。 当我添加一个 Swift 文件时,我的存档大小增加到 10 Mb。

我发现 Swift 将它的实际库嵌入到它所使用的每个项目中。即使将来 Swift 库发生变化,这也是能够运行项目所必需的。

但 8 兆字节对于小型项目来说是一笔巨大的开销。也许有一些关于 Swift 何时会获得嵌入操作系统的稳定库的信息?

或者可能有一些标志可以添加到项目中,强制编译器使用嵌入在 ios 中的标准 Swift 库?

【问题讨论】:

owensd.io/blog/swift-app-size-bundles/… 【参考方案1】:

Swift 仍在改变。所以目前运行时必须包含在每个应用程序中。一旦 Swift 的发展放缓,苹果可能会在 iOS 中包含 Swift 运行时。

自 6.0 测试版以来,几乎每次发布 Xcode 后,Swift 源代码都必须进行调整。运行时在编译器发生变化的同时发生了变化。 iOS 不能使用标准的 swift 库,但必须使用应用程序编译和链接的那个。

见this explanation by Apple。

您可以相信您的应用在未来会很好地运行。事实上,您可以使用相同的应用程序重新定位到 OS X Mavericks 或 iOS 7。这是可能的,因为 Xcode 在您的应用程序包中嵌入了一个小型 Swift 运行时库。由于库是嵌入式的,因此您的应用使用一致的 Swift 版本,可在过去、现在和未来的操作系统版本上运行

在确保应用的运行时兼容性的同时,Swift 语言本身将继续发展,二进制接口也将发生变化。

随着 Swift 的变化,这些框架将与您应用的其他部分不兼容。当二进制接口在一两年内稳定下来时,Swift 运行时将成为宿主操作系统的一部分,这种限制将不再存在

不使用 Swift 是缩小应用程序大小的唯一方法。

由于Swift 3.0 won't deliver a stable ABI,暂时保持不变。所以在一两年内可能会在 2018 年转化为 Swift 5.0。

【讨论】:

因此,Apple 在您提供链接的文章中给出的答案是:“当二进制接口在一两年内稳定下来时,Swift 运行时将成为主机操作系统的一部分,而这限制将不再存在” 所以很遗憾,除了等待之外别无选择 有谁知道苹果是否或何时计划改变这一点?我意识到一年前这个答案说“在一两年内”。 我猜最早是 Swift 3.0 和 iOS 10 的版本。但在那之后可能还要再等一年。可能连苹果都不知道确切的时间。 我比较了 Xcode Swift、Xcode Objective C、Xamarin Native 和 Xamarin.Forms。在我的测试中,我看到 Swift 增加了大约 16.5 Mb 的应用程序大小。有趣的是,在我的测试中,Xamarin Native 实际上比带有 Swift 的 Xcode 要小。 anthonytietjen.blogspot.com/2016/03/… Swift 5.0 于昨晚发布。 swift.org/blog/swift-5-released

以上是关于将 Swift 添加到项目中会大大增加规模。如何以及何时可以避免的主要内容,如果未能解决你的问题,请参考以下文章

为啥将项目添加到空白数组中会重复显示项目?

Swift - 如何对 ScrollView 中的项目使用自动布局?

Swift,将更多数据加载到表视图中会导致滚动滞后

如何将 openssl 添加到 swift 项目中

如何在 Swift 4 中以编程方式将 IBAction 添加到按钮?

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)