0

私のアプリケーションでは、次のバージョンの実装の一部に取り組んできました。

そのため、このバージョンではこれらの実装を防ぐ必要があります。

私たちの上司は、#ifDef 、 endif などのプリマクロプロセッサを使用するように私に依頼し、ビルド設定でバージョン番号をプリプロセッサマクロとして定義する必要があります

App_Versionビルド設定にユーザー定義設定 ' ' を追加しました。

ここに画像の説明を入力

「どうやって使うの?

#ifDef AppVersion 1.0
NSLOG (current version implementation)
else
NSLOG (NEXT version implementation)

実はあまり意識していなかったので、私の解釈が下手でした

4

2 に答える 2

1
#if App_Version == 1.0

XCode で新しいプリプロセッサ マクロがどのように定義されているか正確には覚えていませんが、正しく定義しているとは思いません。Xcode 4 でプリプロセッサ マクロを定義する方法を参照してください。

ただし、そのような目的でプリプロセッサ マクロを使用することはお勧めできません。

あなたがすべき

  1. バンドルからアプリケーションのバージョンを読み取るメソッドを作成します
  2. メソッドを呼び出してバージョンを確認し、標準を使用するif-elseif-else

iPhoneの開発では、なぜそのようなマクロ/メソッドを使用するのか想像できません. アプリのバージョンをいくつ作成しますか? 私が iOS 用に実装したすべてのアプリケーションは、1 つのバージョン (最新のもの) しか必要としませんでした。現在のコードから古いバージョンのアプリケーションをビルドする理由がわかりません。

バージョニング システムを使用し、次のバージョンの機能を現在のコードに実装する場合は、専用のブランチを使用してください。そうでなければ、それはただの混乱であり、あなたの監督者は...賢くありません...それを見ないからです.

于 2013-11-07T12:12:53.710 に答える
1

コンパイラは、アプリケーションのバージョンについて何も知る必要はありません (または知りたくありません) (これは、アプリケーションのサブミット プロセスに関する情報です)。これは、独自のマクロを定義する場合を除いて、プリプロセッサ マクロで行うべきではありません (その場合でも、お勧めしません)。実行時にアプリケーションのバージョンを確認する必要があります

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

それに基づいて、現在のバージョンで新しい機能にアクセスできないようにします。より一般的には、 git flowのような分岐モデルを使用して、そのようなことを処理することを検討します。処理するバージョンが 3,4,5 ... ある場合はどうなりますか。プリプロセッサ マクロを管理するのは悪夢になります。

于 2013-11-07T12:19:44.043 に答える