Frameworkにはversionがいくつかあってそれらの違いの雑な説明です。
その1
ひとつはお馴染みのinfo.plistに書くやつ これはちょっと省きます
その2
Umbrella Headerに書いてあるやつ
FOUNDATION_EXPORT double FwVersionNumber; FOUNDATION_EXPORT const unsigned char FwVersionString[];
Build SettingsのCurrent Project Versionがこれにあたります
Frameworkをコンパイルするとわかるんですが、 (ここでは例としてFwというframeworkをつくります)
Compile Fw_vers.c
というcのファイルが勝手に生成されてコンパイルされてます。 中身を見てみると
extern const unsigned char FwVersionString[]; extern const double FwVersionNumber; const unsigned char FwVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:Fw PROJECT:Fw-10" "\n"; const double FwVersionNumber __attribute__ ((used)) = (double)10.;
とこんな感じでxxVersionNumberとxxVersionStringが定義されてます。
Umbrella Headerではこれらをexternしているので、Frameworkを利用しているプログラムはこれらの変数を使うことができます。
その3
Framework VersionのAとかはFrameworkの中身のフォルダ構成を見ての通りでCurrentさしているディレクトリになります
その4
current library versionとcompatibility versionについてですが、
Link時のビルドログをみるとわかるようにこれらの値はclangのオプションとして渡されて使われる感じになります。
clang ... -compatibility_version 1 -current_version 1
詳しくはこの辺を読むと良いのではないでしょうか
現場からは以上です。