2015-04-27 15 views
7

Swift derleyici kullanılmayan işlevleri derliyor mu yoksa bunları yoksayıyor mu?Swift derleyici kullanılmayan işlevleri dikkate almıyor mu?

+0

Bu, derleyici değil, bağlayıcıyla ilgili bir soru olabilir. Derleyici, tüm program bağlanana kadar bir işlev kullanılıp kullanılmadığını bilemez. –

+0

Bence dahil edilmeleri gerekiyor, çünkü linker, Objective-C ile performeo-array: ',' ​​NSInvocation' vb. Ile dinamik olarak çağrılıp yapılamayacaklarını bilemeyecekler. Sadece spekülasyon olsa da, bunu düzeltmek için hiçbir dokümüm yok. . –

+2

Ayrıca ilginç ama tam olarak şu soruya cevap vermiyor: [Dinamik Sevk Azaltılması ile Performansı Artırma] (https://developer.apple.com/swift/blog/?id=27) –

cevap

3

Kullanılmayan işlevler programınızı büyütür.

Bu, testi oldukça kolaydır. Tek bir Görünüm Uygulaması (iOS) olarak yeni bir Swift uygulaması oluşturuldu. Oluşturulan ViewController.swift'de bir işlev ekleyin. Bir yapı (Command-B) yapın ve ürünün derleme klasörünü kontrol edin. Bu genellikle geçerli:

~/Library/Developer/Xcode/DerivedData/ 
    <AppName>-<IDString>/Build/Products/Debug-iphoneos/ 
    <AppName>.app/ 

Kontrol <AppName> dosya boyutu.

İşlevden bahsedin ve yeniden derleme yapın. Dosya boyutu daha küçük olacaktır.

Ben SwiftSandbox adlı bir uygulamayla oluşturulan ve bu ekledi:

-rwxr-xr-x 1 test staff 142992 Apr 27 11:33 SwiftSandbox* 
: dışarı yorumladı fonksiyonu ile

-rwxr-xr-x 1 test staff 213648 Apr 27 11:33 SwiftSandbox* 

:

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

bu işlevle bina

, ben bash gördüm

Xcode'ta herhangi bir en iyileştirme ayarını değiştirmediğimi unutmayın, bu yüzden hangi etkiden emin olamam. Bu olurdu.

İlgili konular