0

我正在构建一个通用的 iPhone/iPad 应用程序。我想支持使用 iOS 4.0 SDK 的快速应用程序切换(多任务处理)(例如:在 iPhone 3GS 上使用 iOS 4.0)。但是,当我将应用程序设置为针对 iPhone OS 4.0 构建时,它不会在 iPad 上启动(当前最新的软件版本是 3.2.1)

因此,SDK 的版本似乎是应用程序启动时使用的最低操作系统版本。

XCode 设置中“iPhone OS 部署目标”字段的注释说明:“代码将在此版本和更高版本的 iPhone OS 上加载。在早期版本中不可用的框架 API 将被弱链接;您的代码应检查空函数调用较新的 APIS 之前的指针或特定系统版本。”

这似乎是矛盾的。如果它不会在早期的 API 上启动,它怎么能弱链接到空指针?

最终,我想知道:我可以构建一个通用应用程序并支持多任务处理的应用程序(假设 iPad OS 是 3.2)?!?

4

1 回答 1

2

将您的构建 SKD 设置为iOS 4,但您的部署目标设置为 iOS 3.2。(我建议创建兼容 3.x 的 iPhone 应用程序,但那是另一回事了)。这种方式启用了多任务,但说代码也在 3.2 下运行,Apple 和你的 iPad 会相信并运行它。

但是请注意,您必须检查自己是否在 3.2 下已经存在某些方法,因为编译器现在将不再警告您(因为它是针对 4.0 构建的)!最受欢迎的是调用错误[[UIScreen mainScreen] scale],它在 3.2 下不可用,因此您的应用程序将崩溃。您必须首先检查是否支持:

CGFloat myScale = 1.f;
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    myScale = [[UIScreen mainScreen] scale];
}
于 2010-08-09T12:31:08.373 回答