Stacking Fire
버전별 분기처리 #available 본문
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()")
'개발 > iOS' 카테고리의 다른 글
UIKit, 안다고 생각했던 것들에 대하여 - 1 (0) | 2018.01.16 |
---|---|
손에 따라 애니메이션처럼 움직이는 커스텀 페이지 인디케이터(Page Indicator) (0) | 2018.01.15 |
오토 레이아웃과 함께 UIView의 애니메이션 기능 사용하기 (0) | 2018.01.10 |
이니시스의 이니페이 모바일 - iOS에서 주의할 점 (2) | 2017.12.27 |
String 익스텐션으로 디자이너의 침공에 대비하자. (NSAttributedString) (0) | 2017.11.16 |
Comments