Не работает целевой iPhone-симулятор макроса - PullRequest
57 голосов
/ 07 августа 2010

Использование макроса 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, если это поможет. Благодарю.

Ответы [ 5 ]

105 голосов
/ 07 августа 2010

TARGET_OS_SIMULATOR определено на устройстве (но определено как false).Исправление:

#include <TargetConditionals.h> // required in Xcode 8+

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

Не уверен, когда это было изменено.Я вполне уверен, что раньше можно было использовать 'ifdef'.

13 голосов
/ 07 сентября 2015

Для меня явно включая TargetConditionals.h помогло

#include <TargetConditionals.h>
5 голосов
/ 27 октября 2015

Попробуйте TARGET_OS_SIMULATOR, так как TARGET_IPHONE_SIMULATOR устарела.

3 голосов
/ 31 июля 2013

Я бы попробовал реализовать макрос, если он будет использоваться в разных классах через приложение.

в файле pch,

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

и в любом классе я могу проверить, вызвав isSimulator ().

1 голос
/ 20 июля 2015

По какой-то причине TARGET_IPHONE_SIMULATOR не работает для меня в xcode v6.4.Фрагмент ниже работает отлично:

#if (!arch(i386) && !arch(x86_64))
  camera           = Camera()
#else
  camera           = MockCamera()
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...