実行時にアプリがデバイスで実行されているかシミュレーターで実行されているかを知りたい。これを検出する方法はありますか?
Bluetooth APIをシミュレータでテストする理由: http://volcore.limbicsoft.com/2009/09/iphone-os-31-gamekit-pt-1-woooohooo.html
#if TARGET_OS_SIMULATOR
//Simulator
#else
// Device
#endif
Plsはこの前のSO質問も参照してください iPhone用にコンパイルするときにXcodeによって設定される#definesは何ですか
括弧内で実行するアクションを指定できるマクロを作成しました。これらのアクションは、デバイスがシミュレートされている場合にのみ実行されます。
#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"));
simulatorかどうかを確認します
#if TARGET_IPHONE_SIMULATOR
// Simulator
#endif
デバイスかどうかを確認します
#if !(TARGET_IPHONE_SIMULATOR)
// Device
#endif
bothを確認します
#if TARGET_IPHONE_SIMULATOR
// Simulator
#else
// Device
#endif
TARGET_IPHONE_SIMULATOR
または1
のいずれかに常に定義されるため、0
でifdef
を使用しないでください。
TARGET_IPHONE_SIMULATORはデバイスで定義されています(ただし、falseに定義されています)。以下のように定義されます
#if TARGET_IPHONE_SIMULATOR
NSString * const DeviceMode = @"Simulator";
#else
NSString * const DeviceMode = @"Device";
#endif
DeviceMode
を使用して、デバイスとシミュレーターを知るだけです
#if targetEnvironment(simulator)
//Simulator
#else
//Real device
#endif
特定のデバイスタイプに対してコーディングするのに役立ちます。
TARGET_IPHONE_SIMULATOR プリプロセッサマクロを使用して、デバイスターゲットとシミュレータターゲットを区別できます。
以下のコードを使用してください:
#if targetEnvironment(simulator)
// iOS Simulator
#else
// Device
#endif
Swift 4
およびXcode 9.4.1