исключение времени выполнения после обновления до Xcode4.5 iOS6 Base SDK

Недавно я обновил свою кодовую базу, чтобы использовать iOS6 Base SDK — я использую XCode 4.5. Мне нужно было только изменить dylibxml2.2.3.7 на dylibxml2.2. Он отлично работает на симуляторе 6.0. Я использую такие библиотеки, как GoogleAnalytics, Three20.

Но когда я запускаю код на iOS 5 (iPhone4), он вылетает при запуске со следующей ошибкой:

Я не могу сказать, где именно он падает, потому что все, что я вижу, это машинные коды, когда он падает.

dyld: ошибка привязки отложенного символа: символ не найден: _objc_setProperty_nonatomic

Ссылка из: /Users//Library/Application Support/iPhone Simulator/5.0/Applications//

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDK/iPhoneSimulator5.0.sdk/System/Library/Frameworks/Foundation.framework/Foundation


person user510164    schedule 24.09.2012    source источник


Ответы (3)


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

Я установил цель развертывания на iOS 3.0, но последняя версия Xcode поддерживает только iOS 4.3 и более поздние версии. Таким образом, компилятор автоматически устанавливает цель развертывания на iOS 6.0, что приводит к ошибке всякий раз, когда проект работает под iOS 6.0. Я исправил это, установив цель развертывания на iOS 4.3 в моем проекте lib.

person Chilly Zhong    schedule 25.09.2012
comment
Потрясающий! Сработало для меня - я полностью пропустил эту часть - невероятно, насколько сумасшедшими могут быть вещи, когда вы переходите на новую iOS и новый xCode - Большое спасибо! - person user510164; 25.09.2012

Существует проблема только в изменении цели развертывания SDK. Я только что создал приложение на основе вкладок. Не делал никаких изменений ни в одном файле. Работает нормально на симуляторе ios 6, но если я изменю
цель развертывания на 5 и запущу на симуляторе ios 5, который создаст исключение (сигнал SIGABRT). Xcode версии 4.5 и цель развертывания SDK 6.0 по умолчанию.

person Panesar    schedule 19.02.2013
comment
+1 за iPhoney ответ. В дополнение к этому, если вы используете xib или раскадровку, обязательно снимите флажок useautolayout в конструкторе интерфейсов, когда вы работаете на ios5. По умолчанию этот параметр отмечен для цели ios6 sdk. - person Panesar; 21.02.2013

Или может случиться так, что вы используете библиотеку, которая была скомпилирована с более высоким базовым SDK, чем базовый SDK вашего проекта.

person GAllan    schedule 04.06.2013