静的ライブラリに対するフレームワークの最大の利点は、コンパイルされたライブラリバイナリと関連するヘッダーをパッケージ化するための優れた方法として機能することです。これらは、(FoundationやUIKitのようなSDKの組み込みフレームワークのように)プロジェクトにドロップでき、(ほとんどの場合)機能するはずです。
ほとんどのフレームワークには動的ライブラリが含まれています。Macフレームワークテンプレートを使用してXcodeで作成されたフレームワークは、動的ライブラリを作成します。iPhoneは動的フレームワークをサポートしていないため、iOSコードの再利用可能なライブラリを静的ライブラリとして配布することが一般的になっています。
静的ライブラリは問題ありませんが、ユーザー側で少し余分な作業が必要です。あなたは、ライブラリにプロジェクトをリンクする必要があり、あなたがあなたのプロジェクトにヘッダファイルをコピーする必要があるか、ビルド設定で適切なヘッダ検索パスを設定することで、どこかにそれらを参照します。
つまり、要約すると、私の意見では、ライブラリを配布する最良の方法はフレームワークとしてであるということです。iOSの「静的」フレームワークを作成するには、基本的に通常のフレームワークを使用して、バイナリをコンパイル済みの静的ライブラリに置き換えることができます。これが私が自分のライブラリーの1つであるRestyを配布する方法であり、今後自分のライブラリーを配布するつもりです。
そのプロジェクトで提供されているRakefileを確認することもできます(気付かない場合は、RakeはRubyのMakeに相当します)。プロジェクトをコンパイルし(を使用xcodebuild
)、iOSの静的フレームワークとしてパッケージ化するためのいくつかのタスクがあります。これは便利なはずです。
または、これらのXcode 4テンプレートを使用してiOSフレームワークを作成することもできます。
2013年12月9日更新:これは人気のある回答なので、編集してライブラリ配布の最初の選択肢が変更されたと言ってみようと思いました。コンシューマーまたはプロデューサーとしてのサードパーティライブラリの最初の選択肢は、CocoaPodsです。CocoaPodsを使用してライブラリを配布し、ヘッダー付きのプリコンパイルされた静的ライブラリをフォールバックオプションとして提供しています。