
어떤 기능 또는 디자인을 넣고 싶은데 꽤 높은 버전에서만 지원을 하는 경우가 생겼습니다. 정말 넣고 싶은데... 낮은 버전을 위해 기능이나 디자인을 빼기는 아쉬울 땐? 버전별로 다른 조건을 걸어주면 됩니다!
이때 사용하는 것이 #available과 @available입니다.
#available은 해당 버전을 포함하여 그 이상의 버전인지 체크를 합니다.
사용할 때 if, guard, while, case 문을 사용해서 특정 버전 이상일 때 처리를 해주면 됩니다.
예시 )
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
if #available(iOS 14.0, *) { // iOS 14.0 이상
completionHandler([.banner, .list, .badge, .sound])
} else { // iOS 14.0 미만의 버전
completionHandler([.badge, .sound])
}
}
@available은 함수, 클래스, 구조체, 프로토콜 앞에 붙어서 OS 및 버전을 제한하는 역할을 합니다.
아래와 같이 함수에 제한 가능합니다.
예시 )
@available(iOS 14.0, *)
func test() {
print("Test")
}