Xcode, iPhone: как определить цель симулятора во время компиляции? - PullRequest
21 голосов
/ 09 июня 2010

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

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

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

Ответы [ 2 ]

54 голосов
/ 09 июня 2010

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

#if TARGET_IPHONE_SIMULATOR
// Simulator code
#endif

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

10 голосов
/ 29 июля 2016

@ Обновление:
В iOS 9.0 SDK TARGET_IPHONE_SIMULATOR - УСТАРЕЛО. используйте TARGET_OS_SIMULATOR вместо TARGET_IPHONE_SIMULATOR

#if TARGET_OS_SIMULATOR
  // Simulator code
#endif

от Swift 4.1:

#if targetEnvironment(simulator)
    // code for the simulator here
#else
   // code for real devices here
#endif
...