Нет необходимости проверять это во время выполнения, просто используйте определение TARGET_IPHONE_SIMULATOR, чтобы отличить этот случай от случая, выполняемого на устройстве.
- personTill  schedule25.04.2011
Обратите внимание, что это макросы времени компиляции и недоступны во время выполнения.
- personEric; 02.08.2012
comment
#include TargetConditionals.h // если ваш источник находится в c
- personScott Stensland; 17.11.2012
comment
Есть ли у посетителей StackOverflow проблемы с пониманием прочитанного? Вопрос состоял в том, чтобы задать различие во время выполнения, а не во время компиляции! Правильный ответ - макрос SIM-карты Фернандо Сервантеса, а не этот. Тем не менее, на момент написания этого комментария у этого неправильного ответа было 32 балла, а у правильного - только 3.
- personStCredZero; 29.10.2013
comment
@StCredZero.
- personJohan Kool; 17.03.2014
comment
@JohanKool В некоторых случаях это имеет значение, например, если вы пишете статическую библиотеку, которая используется в приложениях других людей. У вас нет роскоши проверки во время компиляции, потому что ваш код уже скомпилирован. Итак, ваш чек должен быть во время выполнения. Показательный пример: включение сообщения с предупреждением для разработчика об этой ошибке симулятора Xcode 8: forum.developer. apple.com/message/179846 - personRizwan Sattar; 03.10.2016
comment
@RizwanSattar В этом нет никакого смысла. В любом случае вам нужно скомпилировать две версии библиотеки. Один предназначен для симулятора, в котором используется архитектура, отличная от архитектуры физических устройств. Это правильный ответ.
- personAgop; 18.01.2017
Я создал макрос, в котором вы можете указать, какие действия вы хотите выполнить, в круглых скобках, и эти действия будут выполняться только в том случае, если устройство моделируется.
#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}
Это используется так:
SIM(NSLog(@"This will only be logged if the device is simulated"));
personFernando Cervantesschedule29.03.2012
comment
Свойство model UIDevice не содержит simulator слова из iOS 9
- personmbelsky; 09.05.2016