iPhone检查固件版本

时间:2009-05-10 17:40:13

标签: iphone objective-c firmware

全部

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

有没有办法检查iPhone上使用的固件版本并设置不同的使用方法

4 个答案:

答案 0 :(得分:13)

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

例如:

 #ifdef __IPHONE_3_0
 // code specific to version 3
 #else
 // code specific to version 2
 #end

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

答案 1 :(得分:5)

正如我之前的评论所述,请检查:How to target a specific iPhone version?

答案 2 :(得分:0)

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

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

另一个帖子中有更详细的内容。

答案 3 :(得分:0)

替代解决方案,只需使用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];
    }