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

Iphone 如何使用3.2 SDK支持多任务(快速应用程序切换),iphone,ipad,multitasking,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将弱链接

我正在构建一个通用的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将弱链接;在调用较新的API之前,您的代码应检查空函数指针或特定的系统版本。”

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


最后,我想知道:我能不能构建一个通用的、支持多任务的应用程序(考虑到iPadOS是3.2版本)

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

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

CGFloat myScale = 1.f;
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    myScale = [[UIScreen mainScreen] scale];
}