iOS - @available не защищает доступность здесь;используйте вместо этого (@available) - PullRequest
0 голосов
/ 10 сентября 2018

Я использую приведенный ниже код, но получаю предупреждение,

bool versionSupports = (@available(iOS 10, *));

@ available не защищает доступность здесь; используйте if (@available) вместо

Есть решение, где я могу использовать

if (@available(iOS 10, *)){
//compile
}else{
//fallback
}

Мне было любопытно, почему вывод помещается внутри условия if (), но не помещается в логическую переменную?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

@available(iOS 10, *) не является выражением BOOL.Он не возвращает указание того, выполняется ли код в этой версии iOS или нет.

Он должен иметь вид:

if (@available(iOS 10, *)) {
    // Code that requires iOS 10 or later
} else {
    // Code for iOS 9 or earlier
}

Если вы хотите переменнуюэто указывает, работает ли текущее устройство на iOS 10 или более поздней версии, тогда вы можете сделать что-то вроде:

BOOL versionSupports = [UIDevice currentDevice].systemVersion.floatValue >= 10;

Вы также можете найти Objective-C @available guard AND с дополнительными условиями полезно в зависимости от ваших потребностей.

0 голосов
/ 10 сентября 2018

Это говорит,

@ available может использоваться только как условие для операторов if, guard или while

Таким образом, вы можете напрямую использовать это в if операторах для проверки доступности вместо того, чтобы переносить ее в переменную.

if (@available(iOS 10, *)) {
  // PUT YOUR CODE HERE
} else {
}

In Swift 4.1

if #available(iOS 10.0, *) {

} else {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...