Слабая связь с Интерфейсным Разработчиком

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

Компиляция для цели "Device 3.0 - Debug" в порядке, даже устанавливается на мой iPod Touch с 2.2.1! Работает нормально, пока я не активирую просмотр с помощью MapKit, вылетает, если я это сделаю.

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

1 ответ

Решение

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

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

if (NSClassFromString(@"MKMapView") != NULL) {
    // load nib, map kit is available
} else {
    // do something else, map kit is not there
}
Другие вопросы по тегам