如何使用3.2 SDK支持多任务(快速应用切换)

时间:2010-08-09 12:19:37

标签: iphone ipad multitasking

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

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

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

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

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

1 个答案:

答案 0 :(得分: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];
}