XCode 4.3 создает приложения для iOS с неверно связанными динамическими библиотеками (символ не найден: _OBJC_CLASS _ $ _ CLGeocoder) - PullRequest
1 голос
/ 06 марта 2012

XCode 4.3 создает приложения для iOS в Release Конфигурация с неверно связанными динамическими библиотеками (см. Ошибку внизу).

Приложение вылетает сразу после запуска на устройстве.

Работает сборка приложения с помощью xcodebuild на cli или с Xcode 4.2.1.

Приложение снова связано CoreLocation (и в цели) и на iOS 5.x используется CLGeocoder. На iOS 4.x используется MKReverseGeoCoder. ( NSClassFromString () возвращает класс, даже если класс недоступен )

Это происходит только в том случае, если вы создаете архив и делитесь приложением в виде файла IPA. Сразу после запуска приложения на iOS-устройстве (4.x).

Dyld Error Message:   Symbol not found: _OBJC_CLASS_$_CLGeocoder   
Referenced from: /var/mobile/Applications/*********/AppName.app/AppName
Expected in: /System/Library/Frameworks/CoreLocation.framework/CoreLocation  
in /var/mobile/Applications/*********/AppName.app/AppName
Dyld Version: 179.7

Как мне избавиться от этой ошибки?

Ответы [ 2 ]

4 голосов
/ 24 июля 2012

Я получал ту же ошибку, даже после того, как попробовал решение, опубликованное bllubbor в теме, на которую вы ссылались в своем вопросе:

if (NSClassFromString(@"CLGeocoder") && 
    [NSClassFromString(@"CLGeocoder") instancesRespondToSelector:
@selector(reverseGeocodeLocation:completionHandler:) ]) {

                        //iOS 5 or later    
  }

Мне удалось решить эту проблему, ТАКЖЕ убедившись, что платформа CoreLocation была слабо связана (т. Е. Установлена ​​в значение Необязательный вместо Обязательного) в настройках сборки цели.

3 голосов
/ 22 марта 2012

Добавьте CoreLocation фреймворк в ваш проектный пакет.

...