Objective Cのコンパイルとランタイム(メソッドスウィズリングはランタイムです)は知っていますが、これら2つのライブラリの間に何が線を引くのか知りたいですか? 1つの.aと.dylib?一方が静的でもう一方が動的であると述べる以外に、それらはどのような目的を果たしますか?いつもう一方が必要になるのでしょうか。
静的ライブラリ(.a)
静的ライブラリを使用すると、アプリケーションはコンパイル時にコードをアドレススペースにロードできます。これにより、ディスク上のサイズが大きくなり、起動時間が遅くなります。ライブラリのコードはリンクされたターゲットのバイナリに直接追加されるため、ライブラリ内のコードを更新するには、リンクされたターゲットも再構築する必要があります。 ダイナミックライブラリ(.dylib)
ダイナミックライブラリを使用すると、アプリケーションは、実行時に実際に必要なときに、コードをアドレス空間にロードできます。コードは実行可能バイナリに静的にリンクされていないため、実行時にロードすることにはいくつかの利点があります。主に、ライブラリは、実行可能ファイルを再コンパイルおよび再リンクすることなく、新しい機能またはバグ修正で更新できます。さらに、実行時にロードされるということは、個々のコードライブラリが独自のイニシャライザを持ち、独自のタスクの後でメモリからアンロードされる前にクリーンアップできることを意味します。
.aは静的ライブラリの略です
.dylibはダイナミックライブラリの略です
静的ライブラリ(.a)
静的ライブラリ(.a)は、iOSアプリ開発プロジェクトと一緒に使用できるコンパイル済みクラス、関数のパックです。これはコンパイルされたバイナリファイルまたはファットファイルであり、プロジェクト間で共有できます。
さまざまな理由で静的ライブラリを作成することをお勧めします。
例えば:
あなたやチーム内の同僚が定期的に使用する多数のクラスをバンドルして、それらを簡単に共有したいと考えています。
バグ修正や更新を簡単に追加できるように、いくつかの一般的なコードを一元化できるようにする必要があります。
ライブラリを多くの人と共有したいが、彼らにあなたのコードを見せないようにしたい。 -
ダイナミックライブラリ
拡張子が。dylibで終わるファイルはダイナミックライブラリです。これは、コンパイル時ではなく実行時にロードされるライブラリです。 WindowsまたはDSOのDLLに精通している場合は、多少の工夫を加えたほぼ同じタイプのものです。
dylibはWindowsの* .dllファイルに類似しています。これらには、多くのアプリケーションで再利用することを目的とした、一般的な変更不可能なコードが含まれています。