web-dev-qa-db-ja.com

Mac OS Xのフレームワークとは正確には何ですか? (* .frameworkフォルダー)

わかりました、私は基本的にフレームワークが実際の生活で何であるかを知っています。いくつかのヘッダーファイルとバイナリを保持するいくつかのフレームワークを見てきました。それですか? OS Xフレームワークには、アプリケーションにリンクするヘッダーとライブラリを含むフォルダー以外の特別な機能がありますか?

19
Petruza

フレームワーク情報

Apple Developer Connectionから:フレームワーク定義

フレームワークは、nibファイル、画像ファイル、ヘッダーファイルなどの関連リソースとともに動的共有ライブラリを含むバンドル(構造化ディレクトリ)です。アプリケーションを開発すると、プロジェクトは1つ以上のフレームワークにリンクします。たとえば、iPhoneアプリケーションプロジェクトは、デフォルトでFoundation、UIKit、およびCoreGraphicsフレームワークにリンクしています。コードは、ヘッダーファイルを介してフレームワークによって公開されるアプリケーションプログラミングインターフェイス(API)を介してフレームワークの機能にアクセスします。ライブラリは動的に共有されるため、複数のアプリケーションがフレームワークコードとリソースに同時にアクセスできます。システムは、必要に応じてフレームワークのコードとリソースをメモリにロードし、リソースの1つのコピーをすべてのアプリケーション間で共有します。

alt text

フレームワークプログラミングガイドから:フレームワークとは何ですか?

フレームワークには、静的リンクライブラリや他のタイプの動的共有ライブラリに比べて次の利点があります。

  • フレームワークは、関連しているが別々のリソースをグループ化します。このグループ化により、これらのリソースのインストール、アンインストール、および検索が簡単になります。
  • フレームワークには、ライブラリよりもさまざまな種類のリソースを含めることができます。たとえば、フレームワークには、関連するヘッダーファイルとドキュメントを含めることができます。フレームワークの複数のバージョンを同じバンドルに含めることができます。これにより、古いプログラムとの下位互換性が可能になります。
  • フレームワークの読み取り専用リソースの1つのコピーのみが、それらのリソースを使用しているプロセスの数に関係なく、常に物理的にメモリ内に存在します。このリソースの共有により、システムのメモリフットプリントが削減され、パフォーマンスが向上します。

関連SO質問

SO質問1444543:Mac OSXでのPythonのフレームワークビルドと非フレームワークビルドの違い

22
Matthew Rankin

それは、「Mac OSXテクノロジーの概要」を引用しています。

フレームワーク動的共有ライブラリを、ヘッダーファイルやリファレンスドキュメントなど、ライブラリに必要なリソースとともにパッケージ化するバンドルの一種。

したがって、「。framework」は基本的に「.app」と同等ですが、実行可能ファイルではなく動的共有ライブラリの場合のみです。

3
double-m

Mac OS Xでは、フレームワークはバージョン管理されたバンドルライブラリです。お気づきのとおり、一部のフレームワークは非常にシンプルで、単一バージョンのヘッダーファイルとライブラリ自体のみが含まれています。他のフレームワークには、複数のバージョン、複数のライブラリファイル、サブフレームワーク(この場合、親フレームワークはアンブレラフレームワークとも呼ばれます)、および画像やローカライズされた文字列などのリソースファイルを含めることができます。

詳細については、 フレームワークプログラミングガイド を参照してください。

3
user557219