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: "새로운 함")

주로 함수가 새로 같은 기능을 하는 것이 새롭게 변경된 것이 있을 경우 사용합니다.