Слабая связь с интерфейсом Builder

Приложение использует 3.x SDK функцию, но ее нужно запустить в 2.x устройствах. Решение похоже использует "слабое соединение", которое я сделал, но приложение все еще не скомпилирует * для iPhone 2.2.1: "Framework не найден MapKit".

Компиляция для целевого устройства "Устройство 3.0 - Отладка" в порядке, даже установка на моем iPod Touch работает 2.2.1! Выполняется нормально, пока я не активирую вид с использованием MapKit, сбой, если я это сделаю.

Я создал представление с помощью Interface Builder, перетащил на него объект MkMapView. Насколько я могу судить, это единственная ссылка на MapKit, поэтому возникает вопрос: когда я использую слабое связывание, могу ли я использовать связанные элементы пользовательского интерфейса в IB вообще? Должен ли я все это делать только в XCode? Угадайте, да, но при установке и запуске приложения "3.0" на "2.2.1" устройство меня смущает...

Ответ 1

Нельзя загружать файл nib, который содержит только 3.0 объектов, таких как MKMapView на устройстве 2.0. Это означает, что вам нужно проверить код на наличие фреймворка/классов, которые вы используете в nib. Если они недоступны, вы не должны загружать нить.

Вот как вы можете проверить, доступен ли набор карт:

if (NSClassFromString(@"MKMapView") != NULL) {
    // load nib, map kit is available
} else {
    // do something else, map kit is not there
}