目标iPhone模拟器macros不工作
使用TARGET_IPHONE_SIMULATOR
macros导致在应用程序中定义相同的常量值。 例如:
#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