我正在使用下面的代码但收到警告,
bool versionSupports = (@available(iOS 10, *));
Run Code Online (Sandbox Code Playgroud)
@available 并不保护此处的可用性;使用 if (@available) 代替
有一个解决方案我可以使用
if (@available(iOS 10, *)){
//compile
}else{
//fallback
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,为什么输出可以放置在 if() 条件内,但不能放置在布尔变量中?
@available(iOS 10, *)不是一个BOOL表达式。它不会返回代码是否在该版本的 iOS 上运行的指示。
它需要采用以下形式:
if (@available(iOS 10, *)) {
// Code that requires iOS 10 or later
} else {
// Code for iOS 9 or earlier
}
Run Code Online (Sandbox Code Playgroud)
如果您想要一个变量来指示当前设备是否运行 iOS 10 或更高版本,那么您可以执行以下操作:
BOOL versionSupports = [UIDevice currentDevice].systemVersion.floatValue >= 10;
Run Code Online (Sandbox Code Playgroud)
您可能还会发现Objective-C @available Guard AND'ed 具有更多条件,根据您的需要有所帮助。
| 归档时间: |
|
| 查看次数: |
6063 次 |
| 最近记录: |