Как заставить UI_USER_INTERFACE_IDIOM () работать с iPhone OS SDK <3.2

Apple рекомендует использовать следующий код для определения того, работает ли он на iPad или iPhone / iPod Touch:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  // The device is an iPad running iPhone 3.2 or later.
  // [for example, load appropriate iPad nib file]
}
else {
  // The device is an iPhone or iPod touch.
  // [for example, load appropriate iPhone nib file]
}

Проблема в том, что UI_USER_INTERFACE_IDIOM () и UIUserInterfaceIdiomPad НЕ определены в SDK до 3.2. Это, кажется, полностью разрушает цель такой функции. Их можно скомпилировать и запустить только на iPhone OS 3.2 (iPhone OS 3.2 может работать только на iPad). Поэтому, если вы можете использовать UI_USER_INTERFACE_IDIOM (), результат всегда будет указывать на iPad.

Если вы включите этот код и целевую ОС 3.1.3 (самую последнюю ОС iPhone / iPod Touch) для тестирования кода универсального приложения для iPhone, вы получите ошибки компилятора, поскольку символы не определены в 3.1.3 или более ранней версии. , при компиляции для симулятора iPhone 3.1.3.

Если это рекомендуемый Apple подход к обнаружению устройств во время выполнения, что я делаю не так? Кому-нибудь удалось использовать этот подход к обнаружению устройств?

Ответы на вопрос(8)

Ваш ответ на вопрос