13

シミュレーター用にビルドしているか、デバイス用にビルドしているかに基づいて、アプリで条件付きでコンパイルできる方法はありますか? (私のアプリは外部サーバーにフックします。デバイスで実行している場合は、localhost に接続したいのですが、デバイスで実行している場合は、実稼働サーバーに移動したいと考えています。)

検出できる #ifdef 変数、または実行時に何かを探しています...問題ではありません。

ありがとう。

4

2 に答える 2

18
#if !(TARGET_IPHONE_SIMULATOR)

または、代わりに、

#if (TARGET_OS_IPHONE)

デバイスで実行しているかどうかがわかります。それが機能するためには、

#include "TargetConditionals.h"

ここで見つけることができるファイル。

于 2009-12-01T20:02:50.690 に答える
1

括弧内に実行するアクションを指定できるマクロを作成しました。これらのアクションは、デバイスがシミュレートされている場合にのみ実行されます。

#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}

これは次のように使用されます。

SIM(NSLog(@"This will only be logged if the device is simulated"));
于 2012-03-29T18:44:14.807 に答える