2010-06-09 2 views
19

Интересно, если при создании приложения для iPhone для симулятора есть специальные DEFINE, которые позволяют мне условно скомпилировать для этого случая?Xcode, iPhone: Как определить цель симулятора во время компиляции?

Если нет, я должен добавить свои собственные цели для этого случая, но я бы предпочел бы автоматическое обнаружение.

В качестве альтернативы, существует ли динамический способ узнать, когда мой код работает на симуляторе, я имею в виду что-то, что задокументировано? Я уже давно искал документы, но пока не повезло.

ответ

53

Для компиляции проверки вам нужно TARGET_IPHONE_SIMULATOR определено в TargetConditionals.h

#if TARGET_IPHONE_SIMULATOR 
// Simulator code 
#endif 

Для времени выполнения проверки вы можете использовать, например, метод -model в UIDevice. Для iPhone симулятор возвращает iPhone Simulator строку (не уверен насчет IPad симулятор, хотя)

+0

На 4.2, когда тренажер в IPad режиме он появляется всегда возвращает 'iPhone Simulator'. – zekel

9

@Update:
В IOS 9.0 SDK, TARGET_IPHONE_SIMULATOR это - осуждается. использование TARGET_OS_SIMULATOR вместо TARGET_IPHONE_SIMULATOR

#if TARGET_OS_SIMULATOR 
    // Simulator code 
#endif 
Смежные вопросы