Определить устройство iPhone во время выполнения - PullRequest
2 голосов
/ 14 августа 2010

Есть ли способ выполнить проверку во время выполнения для устройства iPhone во время выполнения?Он должен отличать iPhone 4 от других моделей iPhone / iPod touch.Любой обходной путь, который делает то же самое, тоже подойдет.

Ответы [ 2 ]

4 голосов
/ 14 августа 2010

Я использую такой код для этой же цели:

if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;
return NO;

Только устройства iOS 4.x + поддерживают метод экземпляра UIScreen scale.И поскольку iPhone4 не поддерживает iOS 3, мы можем исключить это сразу.Затем мы проверяем, равен ли масштабный коэффициент 2,0, если мы знаем, что он имеет дисплей сетчатки.

Хотя это не является окончательным (яблоко может выпустить еще одно устройство сетчатки глаза завтра), он тестирует «модель», гдеэто важно - то есть вы могли бы получать изображения из веб-службы, предоставляющей изображения @x и стандартные изображения, что я и делаю, а это значит, что вам нужно написать поддержку масштабирования изображений вручную, вы не получите еебесплатно как с UIImage -imageNamed: для локальных файлов.

0 голосов
/ 14 августа 2010

Точную модель можно получить с помощью класса UIDevice:

[[UIDevice currentDevice] model]

Этот и некоторые другие методы описаны здесь: http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

Будьте осторожны, чтобы не перепутатьаппаратная модель с версией iOS.Если вы хотите предоставить дополнительную / другую функциональность для устройств, которые их поддерживают, лучше проверить, доступен ли этот конкретный интерфейс, используя responsedsToSelector: метод или функцию NSClassFromString.

Будьте осторожны с использованием функции NSClassFromStringтем не менее, поскольку некоторые классы существуют как часть частного API в более ранних версиях SDK, с совершенно другим интерфейсом.

...