Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Stacking Fire

버전별 분기처리 #available 본문

개발/iOS

버전별 분기처리 #available

라우비 2018. 1. 10. 19:12

iOS는 매년 새로운 API를 출시하는가 하면, 예전에 있던 API를 제거하기도 합니다. 하지만 상용 앱을 만드는 입장에서 타겟은 늘 정해져 있죠. iOS의 장점 중 하나가 프래그멘테이션 최소화를 통해 강력한 새 기능들을 최대한 많은 사람들에게 제공한다는 데 있기 때문에, 새 기능을 도입하는 것은 필수적입니다. 그러면서 하위호환도 생각해주기 위해, #available을 이용해서 분기 처리를 해 줍니다.

사용 방법

if #available(iOS 10.0, *) {
    // iOS 10.0 이상이라면 이런 행동을 해라
} else {
    // 아니면 이런 행동을 해라.
}

*의 의미

원래 플랫폼 여러 개에 대해서 예외처리를 해주는 코드이기 때문에, 아래처럼 다른 플랫폼을 추가해 줄 수 있습니다. 마지막의 *는, 미래의 혹시 있을지 모를 플랫폼을 위한 자리라고 합니다. 빼면 컴파일을 안 해줘요. 잘 이해가 되는 이유는 아니지만, 일단은

if #available(iOS 11.0, macOS 10.13, *) { ... }

버전 제약 걸어주기

하다 보면 인터페이스를 스스로 만들 경우가 많습니다. 그런 경우에는 아래처럼 명시해 주는 것이 좋습니다. 물론 왠만하면 새로운 API로 교체해주는 편이 좋겠지만,

@available(iOS, deprecated:9.0, message:"Use someNewFuncName()")


Comments