IOS7までは、Appleはセキュリティ上の問題により動的リンクをサポートしていませんでした。開発者間のコードの再利用は通常、アプリの実行可能ファイルの一部として構築された静的ライブラリに依存していました。
拡張機能は別個の実行可能ファイルであるため、iOS8で拡張機能を導入すると、これが少し変更されるようです。拡張機能とそれを含むアプリの間でコードを共有することは、フレームワークを介して行われます。 Appleはリリースノートでこれを言っています:
IOSのフレームワーク。 iOS開発者はdynamicフレームワークを作成できるようになりました。フレームワークは、複数のプロジェクトにわたって価値のある機能をカプセル化するためのコードとリソースのコレクションです。フレームワークは拡張機能と完全に連携し、メインアプリケーションとバンドルされた拡張機能の両方で使用できるロジックを共有します。
強調は私のものです。
さらに、拡張機能開発ガイドでは、「埋め込みフレームワーク」を介して拡張機能とそれを含むアプリの間でコードを共有できることを説明しています。
私の質問は-埋め込みフレームワークとは何ですか、それは動的フレームワークとどのように違うのですか、そしてiOS8で適切な動的リンクが実際に見られるでしょうか?私が読んだすべてのドキュメントはこれについて曖昧なようです。
「組み込み」フレームワークと「動的」フレームワークは、フレームワークの同じ側面を指しません。彼らはお互いの反対ではありません。最初に、フレームワークとは何かを定義しましょう:Apple専門用語では、フレームワークはいくつかのコンパイル済みコード+上記のコードのパブリックヘッダーを指します。
dynamicフレームワークは、コードが動的ライブラリとして構築されたフレームワークです。これは、コードが静的ライブラリとして構築される「静的」フレームワークの反対です。ご参考までに、ウィキペディアには静的ライブラリと動的ライブラリの違いについて 非常に良い説明 があります。
最後に、embeddedフレームワークは、システム全体にインストールされるのではなく、たとえば「/ System/Library/Frameworks」にアプリ内にパッケージ化されるフレームワークです。
組み込みフレームワークは、システムディレクトリにインストールされるグローバルフレームワークではなく、単にアプリバンドルに含まれるものです。
Static framework
-static library
とリソースが含まれています
Dynamic framework
-dynamic library
とリソースが含まれています
System framework
-Dynamic framework
であり、システムレベルで保存され、すべてのアプリで使用できます。 Appleは、それ自体のシステムフレームワークを作成する機能を予約しています。現在、サードパーティの開発者がiOSでシステムフレームワークを作成する方法はありません。
Embedded framework
はDynamic framework
であり、アプリのサンドボックス内に配置され、そのアプリでのみ使用できます。このタイプは、最初に extension が共通のコードとリソースを共有するために作成されました(Deployment targetがiOS8 +の場合)。
続きを読む こちら