苹果所说的“启用死代码剥离”是什么意思

mul*_*des 5 xcode sample swift observation

[编辑]我不知道为什么我对此投了反对票。我在网上查了一下,但没有找到太多关于这个设置的作用,现在我在下面得到了 Rob Napier 的很好的解释,所以我很高兴。我相信这也可以帮助其他人!

我在 Apple 提供的示例应用程序“监视应用程序中的数据更改”中发现了此警告。

在这种情况下这意味着什么?
也不确定它将被删除什么,因为它是一个相当新的代码。而且该应用程序非常小,只是为了演示一些 Swift API。

该应用程序可以在这里免费下载

在此输入图像描述

Rob*_*ier 8

“死代码”是指从未在最终链接的二进制文件中使用的编译代码。作为一种优化,链接器可以将其从二进制文件中删除。这通常是首选,因为它可以显着缩小二进制文件的大小。

如果静态链接库,则很常见有大量死代码,因为您通常只使用库的一小部分,但所有库最初都包含在二进制文件中。

禁用死代码剥离有时很有用。它确实增加了构建过程的时间,对于调试构建来说,跳过它可以更快。一般来说,这对于 iOS 应用程序来说不是一个好主意,因为您必须传输它们才能运行它们,因此巨大的二进制文件可能会成为问题。但对于直接从其构建位置运行的程序来说,有时这可能是一个好处。

当然,如果您的二进制文件本身做了一些棘手的事情,出于混淆目的或在运行时更改代码,死代码剥离有时会破坏这些技巧。一般来说你不应该这样做......

  • @auspicious99 这与资源和资产完全无关。它与 Xcode 几乎没有关系(它是 Xcode 所依赖的链接器的一个功能)。它只删除链接二进制文件中未导出的函数(基本上是“非公开”的,但不要认为这里是 Swift 访问控制;想想 C)并且在二进制文件中未使用。这是链接器的优化,特别是在 C 语言中,已经使用了很多年。 (2认同)