Можно ли заставить симулятор iOS работать как настоящий iPhone? - PullRequest
2 голосов
/ 29 ноября 2011

Симулятор Apple iOS великолепен - я использую его все время, потому что это намного проще, чем работать на реальном устройстве.Однако у него есть несколько недостатков, один из которых слишком мощный.Поскольку он имеет доступ к ресурсам компьютера, я часто нахожу, что код, который хорошо (без сбоев) работает на симуляторе iOS, не всегда работает на реальном устройстве, в данном случае на моем iPhone 4.

Названиеэтого вопроса говорит само за себя, но я скажу еще раз: возможно ли заставить симулятор iOS работать как настоящее устройство iOS?

Ответы [ 4 ]

4 голосов
/ 29 ноября 2011

Вы можете использовать команды 'nice' или 'renice', чтобы изменить более низкий приоритет планирования симулятора, но это, вероятно, мало поможет, если не выполняются другие задачи с более высоким приоритетом. 1001 *

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

1 голос
/ 29 ноября 2011

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

Скажем, симулятор измеряет в 20 раз быстрее ваш код.Вы можете попытаться создать повторяющийся NSTimer в делегате приложения, и каждые 0,05 секунды в режиме обратного вызова таймера наносит спящий основной поток в течение 47,5 миллисекунд (или другого интервала и соотношения), и посмотреть, не замедляет ли это приложение Simulated примерно до скоростиприложение на вашем устройстве.Возможно, вам придется поэкспериментировать с методом проб и ошибок, чтобы получить нужное количество «грязи», из-за которой ваше приложение болит.

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

1 голос
/ 29 ноября 2011

Поместите это в несколько мест в вашем приложении, где вы используете много места в памяти. Это генерирует предупреждение памяти и заставляет iOS освободить представления и иначе попытаться освободить память. Вы можете найти все ваши ошибки viewDidUnload одновременно; -)

#if TARGET_IPHONE_SIMULATOR
    SEL memoryWarningSel = @selector(_performMemoryWarning);
    if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) {
        NSLog(@"simulated memory warning");
        [[UIApplication sharedApplication] performSelector:memoryWarningSel];
    }
#endif

Может быть, добавьте несколько задержек здесь и там для хорошей меры, но вам придется решить, где и сколько отложить. Вот задержка 100 мс:

#if TARGET_IPHONE_SIMULATOR
{ 
    const struct timespec delay = { 0, 100000000 }; 
    nanosleep(&delay, NULL);
}
#endif
0 голосов
/ 29 ноября 2011

Нет, вот как Apple продает dev лицензии.

Возможно, вы сможете ограничить ЦП и ОЗУ, используя какую-то утилиту для его регулирования, но в лучшем случае это предположение.

...