Подтвердить что ты не робот

Макрос 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, если это помогает. Благодарю.

4b9b3361

Ответ 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