제라스의 iOS 공부/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
반응형