Xcode中,Swift可执行文件的大小比Objective-C可执行文件大得多。

10

Swift 应用程序的可执行文件大小比 Objective-C 应用程序的大小大得多。

对于一个新的空 Cocoa 应用程序项目:

  • Objective-C 中,构建后我获得了一个65 KB 的可执行文件
  • Swift 中,构建后我获得了一个4.2 MB 的可执行文件,相当于66倍!!!

如果我查看生成的包,会发现包含了很多框架:

  • libswiftAppKit.dylib、libswiftCore.dylib(3.2 MB)、 libswiftCoreGraphics.dylib、libswiftDarwin.dylib、 libswiftDispatch.dylib、libswiftFoundation.dylib、 libswiftObjectiveC.dylib、libswiftQuartzCore.dylib、 libswiftSecurity.dylib

我没有找到可以指定包含这些库的项目参数...

为什么 Swift 可执行文件的构建方式与 Objective-C 不同?

使用的 Xcode 版本:6.1.1


1
我查看了我重新编写的(不完全相同)应用程序,它从2.3 MB增加到了9.3 MB。 - qwerty_so
1个回答

10

这是可以预料的。

目前,Swift语言本身存在于使用它构建的每个应用程序的二进制文件中。当Swift达到适合与iOS捆绑发布的版本时,这种情况可能会改变,但现在我们必须接受这种行为。正是由于这种行为,您可以在Swift 1.0 / 1.1 / 1.2中构建iOS 7/8应用程序,并且在构建和运行时,它可以正常工作。

您可以在这篇文章中找到更多相关信息。


已经过去三年多了,现在有没有办法创建小型的Swift二进制文件?谢谢! - Emanuil Rusev
1
@EmanuilRusev 苹果已经添加了一个构建优化设置,以优化二进制文件大小(在您的Swift优化级别设置中设置“-Osize”以启用它),但不幸的是Swift仍将与您的应用程序捆绑在一起。他们目前计划在发布Swift 5时进行更改,因为这是他们计划通过实现ABI稳定性来实现的。 - Mick MacCallum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接