大家好
我想为 iPhone 2.2.* 和 3.0 版制作一个应用程序。2.2* 中的某些方法在 3.0 中已弃用。(如 UITableViewCell setText 和 setLabel )
有什么方法可以检查 iPhone 上使用的是哪个固件版本并设置不同的使用方法
大家好
我想为 iPhone 2.2.* 和 3.0 版制作一个应用程序。2.2* 中的某些方法在 3.0 中已弃用。(如 UITableViewCell setText 和 setLabel )
有什么方法可以检查 iPhone 上使用的是哪个固件版本并设置不同的使用方法
您将需要使用预处理器指令进行条件编译,例如 __IPHONE_3_0 并构建两个单独的可执行文件。
例如:
#ifdef __IPHONE_3_0 // 特定于版本 3 的代码 #别的 // 特定于版本 2 的代码 #结尾
如果需要在运行时检测版本,可以使用 [[UIDevice currentDevice] systemVersion]。它返回带有当前 iPhone OS 版本的字符串。
正如在另一个引用的线程中提到的,虽然您可以使用预处理器指令从一个代码库生成两个应用程序,但您仍然需要两个应用程序(一个用于 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];
}