お待たせして申し訳ありません。昨夜急ぐのではなく、非常に詳細な回答を提供したかったのです :) それでは、始めましょう。
プロジェクトの最初に、新しいターゲットを追加する必要があります。プロジェクト設定に移動し、ターゲットを右クリックします。複製をクリックします。

おそらくTarget-copyという名前の新しいターゲットを取得します。また、そのターゲット専用の新しい info.plist ファイルも取得します。

次に、Pro バージョンのビルド設定を編集します。Apple LLVM compiler 4.0 Preprocessingをスクロールまたは検索して見つけます。デバッグ構成とリリース構成の両方に追加します。私は通常、単純なものを使用しPRO=1
ます。また、軽量バージョンに追加PRO=0
する必要があります。そうしないと、そのバージョンをビルドしようとすると未定義になります。

次に、必要になると確信しているようなカスタム plist を追加する方法を見てみましょう。まず、2 つのフォルダーを作成します。これらはグループではなくフォルダであることが重要です。各フォルダーで、まったく同じファイル名の plist を作成できます。

今から、それぞれに何かを追加できます。キーproperty
と値pro string
/を追加しましたlite string
。いよいよコードへ。私が作成したサンプル プロジェクトでは単純に上書きviewDidLoad
しましたが、明らかにこれはどこでも機能します。plist は同じ名前なので、1 行のコードでロードできます。それぞれのターゲットにコピーされるだけなので、混同されることはありません。コード レベル ベースのロジックを実行する必要がある場合は、作成したPRO
プリプロセッサを使用できます。
- (void)viewDidLoad
{
[super viewDidLoad];
// This will load the proper plist automatically.
NSLog(@"Plist Value: %@",[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"]] objectForKey:@"property"]);
// Also remember we set up a preprocessor PRO. you can use it as well.
if (PRO) {
NSLog(@"Only Show for Pro");
} else {
NSLog(@"Only Show for Lite");
}
NSLog(@"This will show for both");
}
これは、私がすべてのライト/プロ バージョンのアプリで使用している方法であるため、プロジェクトや他の複雑なシステム間でコードベースをコピーすることなく、共通のコードベースを共有できます。これまでのところ、私にとってはかなりうまく機能しています:)ハッピーコーディング!
ソース
誰かがプロジェクトを使って見ることができるかもしれないと考えたので、ここではGitHubにあります。