And*_*ord 18 iphone objective-c ios
在之前的iOS版本中,我曾经NSFoundationVersionNumber检测过iOS版本:
#define IS_IOS10orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max)
#define IS_IOS9orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_8_3)
#define IS_IOS8orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1)
#define IS_IOS7orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
#define IS_IOS6orHIGHER (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_6_0)
...
Run Code Online (Sandbox Code Playgroud)
现在我想对iOS 11做同样的事,但我找不到正确的NSFoundationVersionNumber.文档显示NSFoundationVersionNumber_iOS_9_x_Max是最新的.
那么,NSFoundationVersionNumber如果使用iOS 11 ,如何检测是否正确?
Cha*_*tka 81
如果您使用的是Xcode 9或更高版本,则可以使用以下@available属性:
if (@available(iOS 11.0, *)) {
NSLog(@"newest");
} else {
NSLog(@"not newest");
}
Run Code Online (Sandbox Code Playgroud)
在Swift中,它是相同的,但拼写#available而不是@available.
这是比其他方法更好的方法,因为编译器知道它,并将适当地抑制可用性警告.因此,在上面的示例中,您可以使用if块中的iOS 11.0中引入的API,而不会被警告有关项目的部署目标不可用的API.
Ada*_*dam 15
获取系统版本的指定方法之一是使用UIDevice的systemVersion属性. https://developer.apple.com/documentation/uikit/uidevice/1620043-systemversion?language=objc
NSString*systemVersion = [[UIDevice currentDevice] systemVersion];
你可以这样使用它:
#define IS_IOS11orHIGHER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12894 次 |
| 最近记录: |