1

我在我的应用程序中使用 Three20 库,在链接应用程序期间看到此错误:

“_UIApplicationDidEnterBackgroundNotification”,引用自:libThree20UINavigator.a(TTBaseNavigator.o) 中的 _UIApplicationDidEnterBackgroundNotification$non_lazy_ptr(也许您的意思是:_UIApplicationDidEnterBackgroundNotification$non_lazy_ptr)ld:未找到符号

我已经看到,当我尝试为 BASE SDK IOS 3.2 模拟器而不是 IOS 4.1 模拟器构建时会发生此问题。我尝试了以下设置无济于事:

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

我厌倦了尝试这些排列。真的很想了解正在发生的事情-但无法找到任何有意义的日志。感谢您的任何评论/答案。

4

3 回答 3

2

弱泄漏的 UIKit 会不必要地大大降低你的应用程序的速度——不要这样做。

将您设置Base SDK为最高,然后将您设置Deployment Target为您想要支持的最低操作系统。编译器会自动弱链接低版本 SDK 中不可用的 API

请记住,如果您希望在较旧的操作系统上运行,则需要在使用新类之前检查它们。

于 2010-10-15T19:46:54.153 回答
1

该符号在 4.0 SDK 中声明。您不能在 iOS 3.x 上使用该功能。你有2个选择:

1) 针对 iOS 4.0 或更高版本

2)使用早期版本的three20,它是为与您的目标sdk一起工作而构建的

于 2010-10-09T00:05:18.497 回答
0

解决此问题的最佳方法是针对 UIKit 进行弱链接。您可以在常规选项卡的项目/目标设置中执行此操作。在 Linked Libraries 部分找到 UIKit 并将类型从 Required 设置为 Weak。

于 2010-10-14T17:40:33.543 回答