全部
我想为iPhone 2.2。*和版本3.0制作一个应用程序。 2.2 *中的某些方法在3.0中已弃用。 (比如UITableViewCell setText和setLabel)
有没有办法检查iPhone上使用的固件版本并设置不同的使用方法
答案 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];
}