3

大家好

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

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

4

3 回答 3

13

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

例如:

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

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

于 2009-05-10T18:08:51.380 回答
0

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

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

另一个线程中有更多细节。

于 2009-05-12T14:37:41.527 回答
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];
    }
于 2014-03-10T07:19:46.633 回答