#ios #objective-c #runtime #simulator
Вопрос:
Есть ли способ проверить, работает ли приложение на симуляторе во время выполнения? Я уже знаю, как проверять во время компиляции. Я хочу убедиться, что приложение работает в симуляторе во время выполнения. (не быстро, в Objective-C…) Спасибо.
Комментарии:
1. Я не совсем понимаю этот вопрос. Вы имеете в виду локальную проверку устройства или какой-то удаленный мониторинг живых пользователей?
2. Например, если мое приложение работает на симуляторе, я хотел бы, чтобы появилось окно «Это приложение в настоящее время работает на симуляторе». И если мое приложение работает на реальном устройстве iphone, я хочу, чтобы появилось всплывающее окно с сообщением «Это приложение в настоящее время работает на реальном устройстве». @Шеймус
Ответ №1:
Нет никакой разницы между проверкой во время компиляции/выполнения, потому что устройства ios и симуляторы имеют разную архитектуру — arm64
и x86_64
, соответственно, вы НЕ можете запускать код ARM на симуляторе и наоборот. Другими словами, у вас есть две скомпилированные копии вашего кода, которые созданы для целевых платформ.
Чтобы проверить, какой из них запущен, вы можете использовать следующий флаг SDK для симулятора iOS:
const BOOL IS_SIMULATOR(void) {
#if TARGET_IPHONE_SIMULATOR
return YES;
#else
return NO;
#endif
}
Комментарии:
1. С выпуском mac с чипом M1, сможет ли выход архитектуры arm постепенно запускаться в симуляторе в будущем? @iUrii
2. @nickp, возможно, нужно будет проверить некоторые переменные env, но в любом случае это хорошее уведомление для отдельного вопроса.