如果我的部署目标是iOS7,如何检测仅iOS8代码?

时间:2015-07-27 03:57:16

标签: ios xcode ios7 ios8

对于我的应用,我想支持iOS7和iOS8。我已经将部署目标设置为iOS7,但是Xcode没有向我突出显示仅在iOS8上可用的方法(导致应用程序在iOS7中崩溃,例如使用[NSString containsString])。

在Android Studio中,如果您设置了minSDK,如果您使用的方法仅在较新版本中添加,则会显示警告。我试过四处寻找,但我似乎找不到任何有用的东西。我觉得我可能会遗漏一些基本的东西。

5 个答案:

答案 0 :(得分:2)

if ( [object respondsToSelector:@selector(containsString:)] )
    NSLog ( [object containsString:@"abc"]?@"WOOT!":@"darn..." )

答案 1 :(得分:1)

您就是这样做的:

if ([string respondsToSelector:@selector(containsString:)]) {
    //Do your iOS 8 only code.
}

答案 2 :(得分:0)

如果不支持旧的iOS版本,无法知道您是否使用新功能。唯一的方法是在文档中检查它们的可用性:(。

为了编写在iOS版本之间更改的代码,请添加全局变量或定义:

#define IS_UNDER_IOS_8 ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0)

像这样使用它:

if (IS_UNDER_IOS8) {

}
else {

}

答案 3 :(得分:0)

你可以直接替换

[stringA containsString:stringB]

[stringA rangeOfString:stringB].location != NSNotFound

这将检查位置是否等于NSNotFound以知道字符串是否包含另一个字符串。

答案 4 :(得分:0)

可能有人可以尝试使用早期版本的基础SDK编译项目。然后它应该显示在早期iOS版本中不起作用的代码。虽然XCode仅包含最新的SDK。因此需要下载SDK并将其复制到适当的目录。类似的东西:https://stackoverflow.com/a/12523971/550656