Как определить, работает ли мое приложение на Simulator или на устройстве с помощью кода.
Ответ 1
Имейте в виду, что UIDevice предоставляет вам уже информацию о самом устройстве.
[[UIDevice currentDevice] model]
Вы также можете использовать следующее:
TARGET_IPHONE_SIMULATOR сообщает, что вы находитесь в симуляторе iPhone.
TARGET_OS_IPHONE сообщает, что вы работаете с iPhone вместо MacOS.
#if TARGET_IPHONE_SIMULATOR
NSLog(@"Running in Simulator - no app store or giro");
#else
NSLog(@"Running on the Device");
#endif
и когда ТОЛЬКО интересуется устройством
#if !(TARGET_IPHONE_SIMULATOR)
NSLog(@"Running on device");
#endif
Ответ 2
Вы можете использовать эту константу
#if TARGET_OS_SIMULATOR
NSLog(@"This is simulator mode....");
#else
NSLog(@"This is device mode....");
#endif
Ответ 3
То же самое скомпилированное приложение не может работать как на Simulator, так и на iOS-устройстве, так как наборы инструкций CPU совершенно разные (x86 и ARM). (... если вы не строите какой-то очень странный супер-универсальный бинарный файл с использованием lipo)
Существует несколько способов определить, было ли приложение скомпилировано для x86 или нет. Один из них заключается в добавлении кода времени выполнения, который отличается в зависимости от одного из многих предопределенных макросов препроцессора компилятора. Вы можете получить список макросов препроцессора для компиляции x86, введя его в командной строке терминала: