ターゲットのビルド設定で、Versioning System
をNone
からApple Generic
に変更してください。次に、アプリケーションのバージョンを変更するたびにCurrent Project Version
の設定を変更します。
バージョン番号については
const unsigned char $(PRODUCT_NAME)VersionString[] = "@(#)PROGRAM:$(PRODUCT_NAME) PROJECT:$(PROJECT_NAME)-$(CURRENT_PROJECT_VERSION)\n";
const double $(PRODUCT_NAME)VersionNumber = (double)$(CURRENT_PROJECT_VERSION);
、小数点以下第三位の後に何が遮断されて:あなたは、他のビルド設定を変更しない場合は、次のように各ビルドには、2つの変数を含んでいる$(PRODUCT_NAME)_vers.c
と呼ばれるファイルを生成定義されますそれは二重として表現することができます。 1.2.3が1.2として格納される。両方の変数にはused
属性も指定されているため、使用しない場合は削除されません。
これらの変数を使用するには、それらを使用するファイルでexternとして宣言する必要があります。これを使用するすべてのファイルでこれを行うか、これらの宣言を含むヘッダーを作成してファイルにインクルードすることができます。宣言は次のようになります。
extern const unsigned char $(PRODUCT_NAME)VersionString[];
extern const double $(PRODUCT_NAME)VersionNumber;
通常の変数のように使用できます。
アプリケーションがコード署名されている場合、ユーザーはアプリケーションを中断することなく 'Info.plist'ファイルを変更することができません。とにかく 'Info.plist'でアプリのバージョンを変更するのはなぜですか?これは非常に起こりそうなシナリオのようです。 –
バージョン番号の対象となるアプリケーションで古い動作が残っているのはなぜですか?なぜ古いコードを外してみませんか? –
私のアプリがサーバー上でリレーする場合、クライアントとサーバーは動作を同期させる必要があります。サーバーが更新されると、ユーザーはアプリを更新する必要があり、更新ルーチンはソリッド・バージョン番号でリレーする必要があります。今のところ私はpchファイルにNSStringを作成しました。 – kilianc