如果我将iPhone应用的Base + Active SDK设置为3.0,部署目标设置为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 建议使用新方法而不是弃用的方法;但这些方法将来也可能消失。

你有几个选择:

  1. 只要应用程序和方法实际上在 OS 3.0 上运行,就可以忽略警告。
  2. 进行运行时检查以确定操作系统版本,并调用适当的方法:

    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 指令不起作用

  3. 放弃操作系统 2.2 支持。您只以 3.0 为目标也是非常合理的,因为 3.X 的采用率相当高。就我的小型应用程序而言,12 月份,在 2,058 个用户中,有 27 个用户使用 3.0 之前的系统。不用说,这个选项显着减少了您的测试需求。

其他提示

没有,你不能使用OS 2.x版本的设备上3.0来电。我会感到惊讶,如果你甚至可以2.x版本的设备上安装了一个3.0的目标应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top