В основном вам нужно сделать две вещи:
- Слабая ссылка на любые фреймворки, которых нет в 3.2 SDK.
- Написание тестов во время выполнения для любых API, новых для iOS 4.
Чтобы сделать первое, щелкните правой кнопкой мыши на цели и выберите «Получить информацию». Платформы перечислены в инспекторе (на вкладке «Общие») с раскрывающимся списком рядом с ними, который позволит вам выбрать «слабую» ссылку. Это гарантирует, что приложение все еще будет работать, если фреймворк отсутствует.
Чтобы выполнить второе, вы можете сделать что-то вроде следующего, чтобы протестировать новую блочную анимацию в iOS 4:
if ([UIView respondsToSelector:@selector(animateWithDuration:animations:)]) {
// Your awesome animation code here
} else {
// Your almost-as-awesome, non-block-based animation code here.
}
Используя интроспективные методы, такие как -respondsToSelector:
, вы можете избежать вызова чего-то, что не работает в текущей ОС.
Обратите внимание, что если вы хотите поддерживать iPhone OS 3.0, будут применяться те же правила.
Наконец, также возможно - хотя и не желательно - сделать это так:
#ifdef __IPHONE_4_0
// Your iOS 4.0-compatible code here
#elif defined(__IPHONE_3_2)
// Your iPhone OS 3.2-compatible code here
#elif defined(__IPHONE_3_0)
// Your iPhone OS 3.0-compatible code here
#endif
Почему это не рекомендуется? Все просто: будет скомпилирован только код для версии iOS с наибольшим номером . Приложения iPhone не компилируются отдельно для отдельных версий iOS, поэтому для того, чтобы это действительно работало , вам нужно выпустить несколько версий приложения.