"_UIApplicationDidEnterBackgroundNotification", на который ссылается: ошибка при связывании - PullRequest
1 голос
/ 09 октября 2010

Я использую библиотеку Three20 в своем приложении, я вижу эту ошибку во время связывания приложения:

"_ UIApplicationDidEnterBackgroundNotification", на который ссылаются из: _UIApplicationDidEnterBackgroundNotification $ non_lazy_ptr в libThree20UINavigator.a (TTBaseNavigator.o) (возможно, вы имели в виду: _UIApplicationDidEnterBackgroundNotification $ non_lazy_ptr) ld: символ (ы) не найдены

Я видел, что эта проблема возникает, когда я пытаюсь собрать для BASE SDK IOS 3.2 Simulator, но не на IOS 4.1 Simulator. Я пробовал следующие настройки безрезультатно:

Architecture for my project and ALL Three20 projects set to Optimized
Project Settings/Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator

Architecture for my project and ALL Three20 projects set to Standard
Project Settings/Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator

Architecture for my project and ALL Three20 projects set to Standard
Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator
Project Settings - BaseSDK for my project set to IOS 4.1 Simulator

Следующие настройки работают:

Architecture for my project and ALL Three20 projects set to Standard (or Optimized)
Active Target/Project Settings BaseSDK for ALL Three20 projects set to IOS 3.2 Simulator
Active Target/Project Settings BaseSDK for my project set to IOS 4.1 Simulator

Я устал от попыток этих перестановок. Действительно хочу понять, что происходит, но не смог найти никаких значимых журналов. Спасибо за любые комментарии / ответы.

Ответы [ 3 ]

2 голосов
/ 15 октября 2010

Слабая утечка UIKit излишне замедляет ваше приложение - не делайте этого.

Установите Base SDK на максимально возможное значение, а затем установите Deployment Target на минимальную ОС, которую вы хотите поддерживать. Компилятор автоматически устанавливает слабые ссылки только API, недоступные в нижнем SDK.

Помните, что если вам нужно проверить новые классы перед их использованием, если вы хотите работать на более старой ОС.

1 голос
/ 09 октября 2010

этот символ объявлен в 4.0 SDK.Вы не можете использовать эту функцию на iOS 3.x.у вас есть 2 варианта:

1) целевой iOS 4.0 или выше

2) использовать более раннюю версию Three20, которая была создана для работы с SDK, на который вы нацелены

0 голосов
/ 14 октября 2010

Лучший способ обойти эту проблему - это слабая связь с UIKit.Вы можете сделать это в настройках вашего проекта / цели на вкладке Общие.В разделе «Связанные библиотеки» найдите UIKit и установите тип от Обязательный до Слабый.

...