2016-03-20 14 views
2

なぜdoesn't Swift support static librariesなぜSwiftは静的ライブラリをiOでサポートしていません

私はこの説明を見ましたが、私はこの推論を理解していません。

現在のランタイムはOSに付属していないため、静的なライブラリは最終実行ファイルに複数のランタイムをもたらします。静的にリンクされたランタイムは、新しいOSやSwiftとの互換性のためにパッチを当てるのがずっと難しくなります。 。 。 。ランタイムは流動的です。将来のフォワード展開の問題に対処できるように、動的にリンクする必要があります。 - ジョー・Groffの

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

説明してください。

+0

swift 3でスタティックライブラリを使用しているソリューションはありますか?ベンダサンプル(objective-cで書かれています)に2つの.aファイルしかない暗号化ライブラリがあります。これらのライブラリをブリッジヘッダーは(明らかに、ヘッダーの設定がうまくいけば、他の目的でもうまくいきます)、エラーを投げることはできません。いずれかの人がこの問題に関する解決策を得て、親切に手がかりを投稿してください。 – dip

答えて

6

スウィフトアプリのサイズがであることに気付きましたか?これは、スウィフトランタイム全体がの中に埋め込まれているためです()。 Swiftは、アプリケーションに埋め込まれたライブラリによってObjective-Cに変換されます。

この迷惑な戦略の理由は、Swift自体がまだ変化して進化しているということです(Swift 2.2はいつでも最終的になり、言語にもう一度革命を起こします)。したがって、SwiftはObjective-Cのようにシステムの一部になることはできません。それはペースで、システムの更新とは無関係に、独立した流れになっています。

この非常事態は、静的ライブラリとの連携を技術的に非常に困難にします。ダイナミックなリンケージが可能です。

後で、おそらくSwift 3が最終になった後、言語は最後にフリーズされ、Objective-Cのようにシステムの一部になります。 Objective-Cのように静的ライブラリをサポートするのがより簡単になります(そして、Swiftアプリケーションはもっと小さくなります)。

+0

それで、[SwiftはObjective-Cランタイムで動作しません](http://stackoverflow.com/a/24052428/242933)? – ma11hew28

関連する問題