Swift/문법
[Swift] #available과 @available 차이
굿준하
2023. 2. 22. 12:00
잡담
available에 대해서 조사한 이유는 평소 @available은 사용한 적이 자주 쓰지는 않았지만 #available는
주로 사용을 많이 해봤는데 보통은 에러가 자동으로 잡아주는 데 왜 사용하는 것인지 궁금해서
조사하게 되었습니다.
#available
#available은 주로 if문 또는 guard와 자주 사용하며 주로 해당버전을 체크하기 위해서 사용합니다.
@available
@available는 #available보다 조금 더 확장성 있게 사용할 수 있습니다.
1. 함수, 클래스, 구조체, 프로토콜 앞에 붙여서 OS 버전 제한을 할 수 있다
2. #available는 버전 체크에 사용할 뿐이지만 @available는 컴파일 타임에 오류 또는 경고가 생성된다.
unavailable
1. 지정된 플랫폼에서 해당 선언을 사용할 수 없음을 나타낸다
2.swift 언어 제한으로 사용할 수 없다
@available(iOS, unavailable, message: "이제는 사용할 수 없습니다")
이런 식으로 적어주면 지정된 플랫폼이 되면 에러가 뜨면서 "이제는 사용할 수 없습니다"라는 에러가 뜹니다.
introduced
1. 도입된 첫 번째 버전을 나타남 -> 지정한 버전 이상은 계속 사용가능합니다.
@available(iOS, introduced: 14)
deprecated
1. 사용되지 않는 첫번째 버전
@available(iOS, deprecated: 11, message: "deprecated")
주로 더 이상 사용하지 않는 함수에 적어주면 사용하지 않는다는 표시를 할 수 있습니다.
obsolated
1. 폐기된 첫 번째 버전
2. swift에서도 사용가능
@available(swift, deprecated: 5, obsoleted: 5.5)
message
1. 말 그대로 오류메시지를 출력하고 싶을 때 함께 사용합니다
@available(iOS, deprecated: 14, message: "deprecated.")
renamed
1. 함수의 이름이 변경될 경우 사용
2. 주로 deprecated와 함께 사용
@available(iOS, deprecated: 11, renamed: "새로운 함")
주로 함수가 새로 같은 기능을 하는 것이 새롭게 변경된 것이 있을 경우 사용합니다.