2010-07-12 3 views
0

Я создаю приложение, которое должно работать с несколькими версиями iPhone OS и использует повышенную точность для Core Location в iOS4.Изменение цели развертывания iPhone: обработка констант Framework

У меня есть код, который выполняет следующие действия: if ([m_locationManager respondsToSelector:@selector(startMonitoringSignificantLocationChanges)]) { m_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; } else { m_locationManager.desiredAccuracy = kCLLocationAccuracyBest; }

в этом случае kCLLocationAccuracyBestForNavigation является константой введена в прошивке 4 и startMonitoringSignificantLocationChanges является методом m_locationManager только введенным в iOS4.

Моя проблема заключается в том, что этот код не работает на устройстве iPhone 3.1.3. Он пытается связать с kCLLocationAccuracyBestForNavigation, но он не может найти символ. Мой вопрос: как я могу ссылаться только на этот символ в версии iOS4, но не на версию для iPhone 3.1.3?

Спасибо, C

ответ

1

я понял, ответ сам. Я поставлю его здесь, чтобы быть полезным другим.

Вам необходимо слабое соединение с базой Core Location, чтобы символ kCLLocationAccuracyBestForNavigation не загружался на телефоны, у которых нет более старых версий.

Чтобы указать, какие фреймворки слабосвязаны, вам нужно дважды щелкнуть целевое приложение и перейти на вкладку «Общие» и выбрать ссылку на библиотеку. Я просто установил Core Location на «Weak», и он работает на iPhone 3.1.3.

1

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

if(&kCLLocationAccuracyBestForNavigation != nil) 
Смежные вопросы