目标iPhone模拟器macros不工作

使用TARGET_IPHONE_SIMULATORmacros导致在应用程序中定义相同的常量值。 例如:

 #ifdef TARGET_IPHONE_SIMULATOR NSString * const Mode = @"Simulator"; #else NSString * const Mode = @"Device"; #endif - (void)applicationDidFinishLaunching:(UIApplication *)application { ... NSLog(@"Mode: %@", Mode); ... } 

始终导致logging“模式:模拟器”。 如果有帮助,我正在运行XCode 3.2.4。 谢谢。

TARGET_OS_SIMULATOR在设备上定义(但定义为false)。 解决方法是:

 #if TARGET_OS_SIMULATOR NSString * const Mode = @"Simulator"; #else NSString * const Mode = @"Device"; #endif 

不知道这是什么时候改变的。 我相当肯定过去有可能使用'ifdef'。

对于我明确包括TargetConditionals.h帮助

 #include <TargetConditionals.h> 

尝试使用TARGET_OS_SIMULATOR,因为TARGET_IPHONE_SIMULATOR已弃用。

我会尝试实现macros,如果它将通过应用程序在不同的类上使用。

在pch文件中,

 #if TARGET_IPHONE_SIMULATOR #define isSimulator() YES #else #define isSimulator() NO #endif 

在任何类中,我都可以通过调用isSimulator()来检查。

出于某种原因,TARGET_IPHONE_SIMULATOR在xcode v6.4中不适用于我。 下面的代码片段完美地工作:

 #if (!arch(i386) && !arch(x86_64)) camera = Camera() #else camera = MockCamera() #endif