Какой смысл в симуляторе iPhone 8?

Что касается особенностей симулятора, что может отличаться между симуляторами iPhone 7 и iPhone 8, кроме идентификатора устройства? Почему Apple включила оба в Xcode?

2 ответа

Решение

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

На самом деле нет заметных особенностей симулятора между iPhone 6, 6 и 7, ни между двумя поколениями iPad Pro 12,9", ни между различными моделями iPhone Plus и т. Д. За последние несколько лет крупных выпусков Xcode, они только что включили / позволили вам создавать специфичные для устройства симуляторы для каждого поддерживаемого устройства, независимо от того, есть ли какое-либо существенное различие между этими устройствами на уровне реализации Simulator. (Конечно, есть много аппаратных отличий, которые выходят за рамки Simulator, например, наборы металлических элементов или функций камеры.)

Еще до того, как у них появились профили Simulator для конкретных устройств (примерно во времена Xcode 6, IIRC?), Simulator предлагал меньший набор профилей, отображающих существенные различия в геометрии экрана - например, iPhone 3.5", iPhone 3.5" retina, iPhone 4"Сетчатка, iPhone 4.7" сетчатки, iPad, iPad сетчатки и т. д.

Одна из проблем этого и возможная причина, по которой Apple изменила курс, заключается в том, что растущее разнообразие и история устройств Apple усложняет отслеживание того, что у вас на уме. (Хорошо, я хочу посмотреть, как теперь работает мое приложение на iPhone 5s. Какой это был размер экрана?) Еще одним может быть то, что размер пользовательского интерфейса не был напрямую привязан к размеру устройства с 2014 года, где iPhone 6 и 6 Plus (и их преемники) предложили увеличенный режим пользовательского интерфейса (который IIRC также находится в симуляторе).

Другая проблема заключается в том, что существуют различия устройств, которые не отображаются на экранах, например 64-разрядная поддержка (не то, что запуск 64-разрядного приложения в виде двоичного файла x86_64 в симуляторе очень похож на запуск двоичного файла arm64 на устройстве, но это первое приближение), Touch ID (для которого симулятор предоставляет прокси-сервер) и т. д. И (как отмечено в @russbishop ответе) симулятор также проверяет, что API uname вернуть реалистичные значения (например, iPhone10,1 для iPhone 8), а не вымышленное моделируемое устройство.

Если вы предпочитаете сокращать набор доступных имитаторных целей в XCode только до тех, которые предлагают существенные различия в геометрии экрана, не стесняйтесь посетить окно "Устройства и симуляторы" и удалить / переименовать по своему вкусу. Для iOS 11 вы можете использовать только iPhone 5s/SE/iPod Touch 6-го поколения, iPhone 6/6s/7/8, iPhone Plus, iPhone X и три размера экрана iPad, что дает вам восемь различных вариантов запуска вместо по умолчанию семнадцать.

Ответ в том, что симулятор пытается быть максимально точным. Это варьируется от возврата правильного идентификатора модели до различий в поведении платформы. Иногда появляются новые аппаратные функции (например, Touch ID, Face ID), которые доступны только на соответствующих симуляторах.

Другие вопросы по тегам