大器晩成

[프로토콜] 선택적 프로토콜 요구사항(Optional Protocol Requirements) 본문

iOS/Swift 문법

[프로토콜] 선택적 프로토콜 요구사항(Optional Protocol Requirements)

zerobugpark 2025. 2. 18. 17:41

[어트리뷰트 키워드]

ex. @available, @objc, @escaping 등

 

어트리뷰트는 컴파일러에게 알려주는 신호이자, 추가적인 정보를 제공합니다.

  • 선언에 대한 추가정보 제공
  • 타입에 대한 추가정보 제공

https://bbiguduk.gitbook.io/swift/language-reference/attributes

 

속성 (Attributes) | Swift

 

bbiguduk.gitbook.io

 

 


//Test 클래스는 iOS 10.0 버전 이상에서만 읽을 수 있음
// 1. 선언데 대한 추가 정보 제공
@available(iOS 10.0, *)
class Test {

}


// 2. 타입에 대한 추가 정보 제공
func test(completionHanlder: @escaping() -> ()) {

}

 

 

 

@objc protocol Bird {
    @objc optional var gender: Bool {get set}
    @objc optional func fly()
    func sit()
}



class Eagle: Bird {
    func sit() {
        
    }
    
}
  • @objc는 스위프트로 작성한 코드를 오브젝티브 C 코드에서도 사용할 수 있게 해주는 어트리뷰트입니다.
  • 프로토콜에서 요구사항 구현시, 선택적인 요구사항이라면 프로토콜 앞에는 @obc를 추가해야 합니다.
  • 멤버 앞에는 @obc optional을 모두 추가해야 합니다.
  • 오브젝티브 C에 해당하는 클래스 전용 프로토콜로 구조체 및 열거형은 사용이 불가능합니다.
    (오브젝티브 C는 구조체와 열거형에서 프로토콜 채택을 지원하지 않습니다.
728x90