현재 장치의 iOS 버전이 특정 버전 (지정된 here) 이하인 경우에만 코드를 실행하고 싶습니다. 애플이 주어진 코드 예제는 다음과 같다 :Objective-C의 @available 키워드를 부정한
if (@available(iOS 10.0, *)) {
// iOS 10.0 and above
} else {
// below 10.0
}
그러나, 하나는 현재 iOS 버전이 특정 버전의 아래에있는 경우에만 코드를 실행하려는 시나리오가 있습니다. 나는 다음과 같은 코드가 작동합니다 가정 :
if ([email protected](iOS 10.0, *)) {
// below 10.0
}
그것이 작동하지 않는 것 같습니다 그러나, 나는 엑스 코드에서 다음과 같은 경고를 받고 있어요 :
@available does not guard availability here; use if (@available) instead
Here를 LLVM가 추가 투입된다 진단 중이 야.
- 는
if
블록 (매우 우아하지 않음)에 코드를 추가하지 않고if-else
변형을 사용그 문제에 대한 두 가지 폴백 (fallback)가 있습니다.
-[NSProcessInfo isOperatingSystemAtLeastVersion:]
과 같은 이전 접근 방식을 계속 사용하십시오.
@available
을 사용하려는 또 다른 방법이 있습니까?
나는 LLVM 기사를 읽었으며 if의 다른 조건이나 명령에'@ available '을 사용할 수 없다고 나와 있습니다. 그래서 기본적으로 생각할 수있는 유일한 방법은 비어있는'if' 본문을 가지고 있지만'else' 블럭 내에서 액션을 수행하는 것입니다. 이것은 나에게 유일한 방법으로 보인다. – cramopy
"그러나 이것이 작동하지 않는 것처럼 보입니다. Xcode에서 다음과 같은 경고가 나타납니다."경고가 있다고해서 작동하지 않는다는 의미는 아닙니다. 이 경고는 가용성을 보장하지는 않지만 단순히 버전 확인으로 사용하고 있으며 가용성을 보장하지는 않는다고 말합니다. – user102008