Макрос iPhone Simulator не работает
Использование макроса TARGET_IPHONE_SIMULATOR
приводит к тому, что те же константные значения определяются в am-приложении. Например:
#ifdef TARGET_IPHONE_SIMULATOR
NSString * const Mode = @"Simulator";
#else
NSString * const Mode = @"Device";
#endif
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
...
NSLog(@"Mode: %@", Mode);
...
}
Всегда приводит к регистрации "Mode: Simulator". В настоящее время я запускаю XCode 3.2.4, если это помогает. Благодарю.
Ответы
Ответ 1
TARGET_OS_SIMULATOR
определяется на устройстве (но определяется как false). Исправление:
#if TARGET_OS_SIMULATOR
NSString * const Mode = @"Simulator";
#else
NSString * const Mode = @"Device";
#endif
Не знаю, когда это было изменено. Я уверен, что в прошлом можно было использовать "ifdef".
Ответ 2
Для меня явно включая TargetConditionals.h
помогли
#include <TargetConditionals.h>
Ответ 3
Попробуйте TARGET_OS_SIMULATOR, поскольку TARGET_IPHONE_SIMULATOR устарел.
Ответ 4
Я бы попробовал реализовать макрос, если он будет использоваться в разных классах через приложение.
в файле pch,
#if TARGET_IPHONE_SIMULATOR
#define isSimulator() YES
#else
#define isSimulator() NO
#endif
и в любом классе я могу проверить, вызвав isSimulator().
Ответ 5
По какой-то причине TARGET_IPHONE_SIMULATOR не работает для меня в xcode v6.4. Фрагмент ниже работает отлично:
#if (!arch(i386) && !arch(x86_64))
camera = Camera()
#else
camera = MockCamera()
#endif