Слабая связь с Интерфейсным Разработчиком
Приложение использует 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
}