устройство iPhone против симулятора iPhone - PullRequest
36 голосов
/ 19 декабря 2008

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

Ответы [ 25 ]

30 голосов
/ 11 ноября 2009

Имена файлов чувствительны к регистру на iPhone, но не в симуляторе.

Так, например, если вы попытаетесь загрузить изображение с UIImage *iconImage = [UIImage imageNamed:"MyIcon.png"], но ваш ресурс на самом деле называется «myicon.png», то он будет работать на симуляторе, но не на устройстве.

14 голосов
/ 19 декабря 2008

Если ваше приложение интенсивно использует графику, как, например, игра, производительность симулятора не похожа на производительность аппаратного обеспечения. Ваше приложение, вероятно, будет гладким и отлично работает на симуляторе, но на оборудовании оно, вероятно, будет отображаться при сканировании, если вы не знаете, что делаете. Вы можете легко перейти от 60 к / с к 3 к / с между симулятором и оборудованием.

11 голосов
/ 19 марта 2011

Тригонометрические функции могут возвращать разные результаты:

float a = cosf( 0.108271248639 );   
printf("%.12f", a);

//simulator: 0.994144439697
//device:    0.994144380093
9 голосов
/ 19 февраля 2011

Порядок, в котором оцениваются параметры функции / конструктора, отличается:

int i = 0;

int f() { return ++i; }

int a, b;

int test(int p1, int p2) {

    a = p1;

    b = p2;

}

test( f(), f() );

//simulator: a = 2, b = 1

//device: a = 1, b = 2
4 голосов
/ 16 августа 2010

Кончики пальцев больше конечной точки курсора мыши в 1 пиксель. Для правильного, даже минимального тестирования юзабилити, вы должны развернуть приложение на устройстве.

4 голосов
/ 19 декабря 2008

Я знаю, что есть некоторые различия в реализации OpenGL ES между устройством и симулятором. Из того, что я понимаю, это главным образом из-за графического чипа на iPhone (PowerVR MBX), имеющего значительно отличающиеся возможности, чем другие машины Mac. Многие из аппаратных ограничений не применяются в симуляторе, поэтому вполне возможно запустить в симуляторе что-нибудь, что полностью рухнет на устройстве.

Существуют также некоторые расширения OpenGL ES, которые поддерживаются оборудованием iPhone, но не поддерживаются в симуляторе. Я считаю, что основным является сжатие текстур PowerVR (PVRTC).

Другой проблемной областью может быть объем памяти. Как ни странно, я не видел, чтобы симулятор автоматически применял ограничения памяти устройства. Следовательно, возможно иметь что-то, что прекрасно работает в симуляторе, счастливо потребляя обильное количество оперативной памяти и никогда не удосуживаясь освободить его, а только быстро прекратить после такого продолжения такого поведения при работе на устройстве.

3 голосов
/ 25 января 2009

Также обратите внимание, что вы будете компилировать против каркасов OS X (где это применимо) при сборке для симулятора, чтобы вы могли использовать методы и классы, которые недоступны в версиях каркасов для iPhone.

Один пример, который я могу вспомнить, - это NSPredicate. Мне удалось скомпилировать и запустить приложение с использованием NSPredicate в симуляторе, но оно не скомпилировалось для устройства, поскольку этот класс недоступен.

3 голосов
/ 19 декабря 2008

У меня была проблема с запуском относительно простого таймера 1/30 секунды для обновления игры. Он отлично работает в симуляторе и замораживает ввод на устройстве.

3 голосов
/ 19 декабря 2008

Существуют определенные фрагменты кода, которые не будут работать на симуляторе (например, с помощью брелка iPhone), но почти для всех приложений симулятор будет работать точно так же, как iPhone.

Тем не менее, нет абсолютно никакой замены для тестирования на реальном устройстве.

2 голосов
/ 28 марта 2009

Есть много тривиальных примеров. Например, вы можете выделить гораздо больше памяти на симуляторе, чем на реальном телефоне. Вы не можете получать push-уведомления на симуляторе, если у вас нет Mac с сетчаткой, шаг точки дисплея другой.

На более фундаментальном уровне симулятор - это то, что он симулирует iPhone OS X с использованием Mac OS X. Об этом свидетельствует тот факт, что файловая система на симуляторе может быть не чувствительной к регистру, но на телефоне она будет , Более тонко, он не эмулирует аппаратные средства, поэтому такие вещи, как местоположение, не будут работать одинаково, а 3D будет сильно отличаться - особенно если вы используете Metal.

Вы всегда должны тестировать на реальном оборудовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...