iPhone SDK 3.0 对比2.2.1
Posted
技术标签:
【中文标题】iPhone SDK 3.0 对比2.2.1【英文标题】:iPhone SDK 3.0 Vs. 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 = @"...";
如果是这样,那会很烦人。
【问题讨论】:
【参考方案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!
【讨论】:
嗨,这可用于开发通用应用程序cocoabugs.blogspot.com/2010/09/…【参考方案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 之间存在奇怪的行为差异,尤其是在表格方面。
【讨论】:
以上是关于iPhone SDK 3.0 对比2.2.1的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 在 3.0 和 4.0 操作系统/SDK 上播放视频?