Framework
概要
Framework とは?
フレームワーク という用語は業界内で非常に多く用いられているが、iOS, macOS アプリケーション開発の文脈における Framework とは、複数アプリケーション間で共有できるパッケージのようなもの。具体的には、共有リソースをカプセル化したディレクトリ (Bundle) のこと。ここで、共有リソース とは、nib ファイル、画像ファイル、ヘッダーファイル、リファレンスドキュメント等を指す。
Framwork Programming Guide - What are Frameworks?
Framework の特徴
Bundle なので、他の Bundle と同様に Foundation Framework の Bundle クラス経由でアクセスが可能。ただし、Framework Bundle は他の Bundle と違い、ディレクトリではありながらも、Finder では通常閲覧できない。
また、versioned bundle format というフォーマットをサポートしており、複数バージョンのコードおよびそのヘッダーファイルを保持できる。これにより、プログラムの過去バージョンを利用できるようになっている。
Bundle Programming Guide - Bundle Structures
メリット
Framework の、静的リンクライブラリや他の動的共有ライブラリに対する利点は以下
独立した関連するリソースをグルーピングできる。リソースの install, uninstall, 及び探索を容易にする
ライブラリよりも広範な種類のリソースを含むことができる。例えば、関連するヘッダーファイルやドキュメント等
複数バージョンの Framework を同一 bundle に含められる。古いプログラムの後方互換を可能にする
いくつのプロセスが利用しているかに関わらず、ただ1つの (read-only な) リソースのコピーがメモリ上に展開され、それが参照される。メモリ使用量の低減やパフォーマンス向上に寄与する
System Framwork
OS X (macOS) のほとんどのインタフェースは Framework としてパッケージングされており、/System/Library/Frameworks 以下に存在する。主な System Framework としては、Carbon, Cocoa 等があり、これらは umbrella frameworks としてグルーピングされている。
Mac Technology Overview - OS X Frameworks