2016-03-20 16 views
2

Neden doesn't Swift support static libraries?Neden niçin statik kitaplıkları desteklemiyor? IO

Bu açıklamayı gördüm, ancak bu gerekçeyi anlamıyorum.

Geçerli çalışma zamanı, işletim sistemiyle birlikte verilmez; bu nedenle statik kitaplıklar, son yürütülebilir dosyada birden çok çalışma zamanına neden olur. Statik olarak bağlantılı bir çalışma zamanının, daha yeni OS veya Swift ile uyumluluk için yama uygulamak çok daha zor olurdu. . . . Çalışma zamanı akışta. Gelecekteki ileri dağıtım sorunları ile başa çıkmak için dinamik olarak bağlantı kurmamız gerekiyor. - Joe Groff

https://twitter.com/owensd/status/555060783407591424

açıklayınız.

+0

3. adımda statik kitaplığı kullanan herhangi bir çözüm var mı, yalnızca iki .a dosyası içeren bir şifreleme kitaplığım var (örnek-c nesnesinde yazılmış) çalışma dosyası, Bu kütüphaneyi köprüleme ile kullanmaya çalıştığımda üstbilgisi, (açıkça diğer başlık-lib'leri iyi çalışıyor gibi başlık yapılandırması köprüleme), hata alamıyor. Bu konuyla ilgili herhangi bir çözüm var, sonra biraz ipucu yazınız. – dip

cevap

6

Swift uygulamalarının büyük olduğunu farkettiniz mi? Çünkü tüm Swift çalışma zamanı, uygulamasının içine gömülüdür. Swift, uygulamanın içine yerleştirilmiş kütüphaneler tarafından başlık altındaki Objective-C'ye çevrilir.

Bu sinir bozucu stratejinin sebebi, Swift'in hala değişmekte ve evrim geçirmesidir (Swift 2.2 şimdi her gün son halini alacak ve dili bir kez daha devrim yaratacak). Böylece, Swift, Objective-C gibi sisteminin bir parçası olamaz; sistem güncellemeleri ile hiçbir ilgisi olmayan bir şekilde, bağımsız bir akıtır.

Bu çok durum, statik bir kitaplık ile bağlantı kurmayı teknik olarak son derece zor hale getirir. Ancak dinamik bağlantı mümkündür, çünkü dinamiktir. Daha sonra, Swift 3 son haline geldikten sonra, en sonunda dil donmuş olacak ve Objective-C gibi sistemi'un parçası haline gelecektir. Daha sonra, Objective-C (ve Swift uygulamaları çok daha küçük olacak!) Gibi statik kitaplıkların desteklenmesi daha kolay olacaktır.

+0

Öyleyse, [Swift Objective-C çalışma zamanında çalışmıyor] (http://stackoverflow.com/a/24052428/242933)? – ma11hew28

İlgili konular