【问题标题】:iPhone SDK 3.0 Vs. 2.2.1iPhone SDK 3.0 对比2.2.1
【发布时间】:2009-06-27 14:52:45
【问题描述】:

我刚刚安装了iPhone SDK 3.0,发现UITableViewCell的text属性已经不用了,应该改用textLabel.text。这是否意味着我必须知道当前的系统版本并调用相应的方法?像这样。

UITableViewCell *cell = ...;
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) {
  cell.textLabel.text = @"...";
} else {
  cell.text = @"...";
}

如果是这样,那会很烦人。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 uitableview


    【解决方案1】:

    您可以检查单元格是否具有新属性,而不是检查操作系统版本:

    if ([cell respondsToSelector:@selector(textLabel)]) {
      // Do it the 3.0 way
      cell.textLabel.text = @"...";
    } else {
      // Do it the 2.2 way, but avoid deprecation warning
      [cell performSelector:@selector(setText:) withObject:@"..."];
    }
    

    【讨论】:

      【解决方案2】:

      只需为 3.0 构建,不再担心 2.2。与主要的操作系统升级不同,人们一直在非常非常迅速地升级到新版本的 iPhone 操作系统。在 TapBots 博客上查看这篇文章:iPhone 3.0 Adoption Rate。

      当您的应用获得批准时(从现在起 2 周 + 一些?)几乎没有人会再使用 2.2!

      【讨论】:

      【解决方案3】:

      您可以使用 3.0 SDK 并针对您的项目使用旧版本,例如 2.2 或 2.2.1。

      为此,您将 Base SDK 设置为 3.0,但更改了 iPhone OS 部署目标设置。如果您获取有关项目的信息,则可以访问这两种设置。

      【讨论】:

        【解决方案4】:

        它已被弃用,他们建议使用新方式,但如果您愿意,您当然仍然可以使用 2.2 方式,它不会对您在 3.0 上运行的应用产生负面影响。如果您担心仍在使用 2.2 的用户,请务必查看提供的链接。如果你为 3.0 编译,我认为这没什么大不了的。

        【讨论】:

          【解决方案5】:

          实际上,我认为您不必这样做,因为当您构建项目时,您可以选择它的目标固件,例如提到的 pgb。然后你可以简单地使用#ifdef 指令。以下是更多信息:iPhone check firmware version 此处发布了更全面的答案:How to target a specific iPhone version?

          编辑:在意识到 systemVersion 实际上是一个字符串后,我删除了一些文本,来源:UIDevice Docs。

          如果您将在项目中的各种文件中使用它,那么您可以通过将其作为属性添加到您的 appdelegate 来组织它,然后他们通过执行以下操作来检索值:

          MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
          NSString *version = theDelegate.version;
          

          但是对于像版本号这样简单的东西来说,这可能太复杂了。

          【讨论】:

            【解决方案6】:

            如果您决定暂时使用 2.2,请务必使用 3.0 在模拟器中进行测试。我们已经看到 2.2 和 3.0 之间存在奇怪的行为差异,尤其是在表格方面。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-02
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多