如果我将 iPhone 应用的 Base + Active SDK 设置为 3.0,Deployment Target 设置为 2.2,是否可以在 2.2 设备上使用新版本的功能?
例如,UITableViewCell
现在需要使用 设置图像[cell.imageView setImage:image]
,而在 2.2 中,您需要调用[cell setImage:image]
. [cell.imageView setImage:image]
会在 2.2 设备上使用新的崩溃吗?
如果我将 iPhone 应用的 Base + Active SDK 设置为 3.0,Deployment Target 设置为 2.2,是否可以在 2.2 设备上使用新版本的功能?
例如,UITableViewCell
现在需要使用 设置图像[cell.imageView setImage:image]
,而在 2.2 中,您需要调用[cell setImage:image]
. [cell.imageView setImage:image]
会在 2.2 设备上使用新的崩溃吗?
不,您不能在 2.2 上调用 OS 3.0。不推荐使用的方法至少在 OS 3 中应该表现正常。在操作系统中的许多情况下,不推荐使用只是意味着 Apple 建议使用新方法而不是不推荐使用的方法;但是这些方法将来也可能会消失。
你有几个选择:
进行运行时检查以确定操作系统版本,并调用适当的方法:
double version = [[[UIDevice currentDevice] systemVersion] doubleValue];
if (version >= 3.0) {
[cell.imageView setImage:image];
} else {
[cell setImage:image];
}
或者更好:
if ([cell respondsToSelector:@selector(imageView)]) {
[cell.imageView setImage:image];
} else {
[cell setImage:image];
}
请注意,编译时检查,使用ifdef
指令将不起作用
放弃对 OS 2.2 的支持。只针对 3.0 也是很合理的,因为 3.X 的使用率非常高。就我的小应用程序而言,12 月,在 2,058 个用户中,我在 3.0 之前的系统上有 27 个用户。不用说,此选项显着减少了您的测试需求。
不,您不能在 2.x 设备上使用 OS 3.0 调用。如果您甚至可以在 2.x 设备上安装面向 3.0 的应用程序,我会感到惊讶。