프로토콜(Protocol)의 선택적 기능 구현 / @objc

썹스·2022년 10월 29일
0

Swift 문법

목록 보기
30/68

프로토콜(Protocol)의 선택적 기능 구현

일반적으로 Custom Type(클래스, 구조체, 열겨형)이 프로토콜을 채택하면, 해당 프로토콜의 모든 기능을 구현해야 합니다.

🤔 프로토콜에 정의된 기능을 모두 구현하지 않고, 부분적으로 구현할 수는 없을까??

@objc 어트리뷰트 키워드와 optional 키워드를 사용하면 프로토콜의 요구사항을 선택적으로 구현할 수 있습니다.

하지만 해당 방법은 클래스만 프로토콜의 기능을 부분적으로 선택할 수 있습니다. ("Objective-C" 문법에서 프로토콜은 클래스만 채택할 수 있습니다. / 구조체, 열거형은 불가능)

✅ 프로토콜의 선택적 기능 구현

  • 코드 앞에 @objc 어트리뷰트(Attributes)를 작성할 경우, Swift 코드가 Objective-C 코드에 접근이 가능해집니다.
  • 프로토콜의 멤버 앞에는 @objc optional을 작성해야 합니다.
import Foundation

@objc protocol ABCD {
    @objc optional func a()
    func b()
    @objc optional func c()
    func d()
}


class XXX: ABCD{
    func b() {      // 필수 정의
        print("b")
    }
    func d() {      // 필수 정의
        print("d")
    }
 

    func a(){
        print("a")  // 선택적 정의
    }
}
profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글