【问题标题】:iPhone check firmware versioniPhone 检查固件版本
【发布时间】:2010-10-25 03:34:06
【问题描述】:

大家好

我想为 iPhone 2.2.* 和 3.0 版制作一个应用程序。 2.2* 中的某些方法在 3.0 中已弃用。 (如 UITableViewCell setText 和 setLabel )

有什么方法可以检查 iPhone 上使用的是哪个固件版本并设置不同的使用方法

【问题讨论】:

标签: iphone objective-c firmware


【解决方案1】:

您将需要使用预处理器指令进行条件编译,例如 __IPHONE_3_0 并构建两个单独的可执行文件。

例如:

#ifdef __IPHONE_3_0 // 特定于版本 3 的代码 #别的 // 特定于版本 2 的代码 #结尾

如果您需要在运行时检测版本,您可以使用 [[UIDevice currentDevice] systemVersion]。它返回带有当前 iPhone OS 版本的字符串。

【讨论】:

  • 实际上,为不同版本的 iPhone OS 构建两个单独的可执行文件并不是一个好的用户体验。它会导致混乱和兼容性问题。相反,如果您的应用与之前版本的 iPhone OS 兼容,请在运行时检查更新 API 的可用性。
【解决方案2】:

正如在另一个引用线程中提到的,虽然您可以使用预处理器指令从一个代码库生成两个应用程序,但您仍然需要两个应用程序(一个用于 2.x,一个用于 3.x)

编译时指令不能用于做出运行时决定。

其他线程中有更多详细信息。

【讨论】:

    【解决方案3】:

    替代解决方案,只需使用 respondsToSelector 进行检查。例如-

    CGSize expectedLabelSize;
        if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
        {
            expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
        }else{
            expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
        }
    

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2011-09-30
      • 2016-06-13
      • 1970-01-01
      • 2015-09-13
      • 2010-12-30
      • 2014-08-04
      • 2016-08-15
      • 2016-09-28
      相关资源
      最近更新 更多