题
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];
}
不隶属于 StackOverflow