HI所有

我想使一个应用程序的iPhone 2.2。*和3.0版本。 2.2 *有些方法在3.0已经过时了。 (像的UITableViewCell的setText和setLabel)

是否有任何的方法来检查哪个固件版本被用在iPhone和设置不同的方法使用

有帮助吗?

解决方案

您将需要使用预处理器指令为条件编译如__IPHONE_3_0和建立两个独立的可执行文件。

例如:

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

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

其他提示

正如我在评论之前提到的检查:如何针对特定iPhone版本?

如在其它引用的线程所提到的,而可以使用预处理器指令以产生从一个代码库两个应用程序,则仍需要两个应用(一个用于2.x和一个用于3.x的)

一个编译时指令不能被用来制造一个运行时间决定。

有一个在其他线程的更多细节。

替代的解决方案,只是检查使用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];
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top