관리 메뉴

사과하는 제라스

[Swift 문법] 프로토콜 옵셔널 - Protocol을 반드시 다 담진 않아도 된다고? 본문

제라스의 Swift 공부/Swift 문법

[Swift 문법] 프로토콜 옵셔널 - Protocol을 반드시 다 담진 않아도 된다고?

Xerath(제라스) 2023. 8. 19. 15:19

목차

    728x90
    반응형

    프로토콜은 그걸 준수하기 위해 쓴다.

     

    근데...

     

    어떤 경우엔 안쓰고 싶을 수도 있잖아..!!

     

    그래서 방법으로 extension을 활용해서 init을 분리해서 반드시 상속하진 않아도 되는 방식으로 짜기도 했다.

    하지만 또 다른 근본적인 방법을 고안해보면

    @objc를 활용하는 방식이 있을 수 있다.

     

    다음 코드를 보도록 하자.

    import UIKit
    
    // 원래 이런 방식으로 extension에 적용함으로서 doCry를 반드시 구현하지 않아도 되도록 구현할 수도 있지만,
    protocol Pet {
    }
    
    extension Pet {
        func doCry(){}
    }
    
    // 이런 식으로 오브젝트-c 프로토콜 내에서 optional 키워드를 주면
    // 해당 멤버는 반드시 구현하지 않아도 문제가 없도록 프로토콜을 적용할 수 있다.
    @objc protocol Animal {
        @objc optional func doMoreCry()
    }
    
    class Cat : Animal {
    }

     

    728x90
    반응형