Swift编译器是否忽略未使用的函数?

Esq*_*uth 7 compilation ios swift

Swift编译器是编译未使用的函数还是忽略它们?

Joe*_*phy 3

未使用的函数确实会使您的程序变得更大。

这很容易测试。创建了一个新的 Swift 应用程序作为单视图应用程序 (iOS)。在生成的ViewController.swift中,添加一个函数。进行构建(Command-B)并检查产品的构建文件夹。这通常是:

~/Library/Developer/Xcode/DerivedData/
    <AppName>-<IDString>/Build/Products/Debug-iphoneos/
    <AppName>.app/
Run Code Online (Sandbox Code Playgroud)

检查<AppName>的文件大小。

注释掉该函数并再次构建。文件大小会更小。

我创建了一个名为 SwiftSandbox 的应用程序并添加了以下内容:

func doSomething() -> NSString {
    var v: NSMutableString = NSMutableString(string: "MyString is Funny")
    v.replaceCharactersInRange(NSMakeRange(3, 3), withString: "World")
    return v
}
Run Code Online (Sandbox Code Playgroud)

当使用这个函数构建时,我在 bash 中看到了这个:

-rwxr-xr-x   1 test  staff  213648 Apr 27 11:33 SwiftSandbox*
Run Code Online (Sandbox Code Playgroud)

将该函数注释掉:

-rwxr-xr-x   1 test  staff  142992 Apr 27 11:33 SwiftSandbox*
Run Code Online (Sandbox Code Playgroud)

请注意,我没有更改 Xcode 中的任何优化设置,因此我无法确定会产生什么效果。