Swift/Swift 기초문법

[Swift 기초문법 - 52] Optional Protocol

힛해 2024. 8. 19. 22:09
728x90

 

 

 

protocol Pet {
        func doCry()
    
}

class Cat : Pet {
    
}

 

이렇게 구현하면 doCry가 정의되어 있지 않기때문애 Cat Class에서 반드시 정의해주어야한다.

 

이를 어떻게 해결 할 수 있는가.

 

1. extension을 통한 옵셔널

protocol Pet {
        func doCry()
}

extension Pet {
    func doCry(){}
}

class Cat : Pet {
    
}

 

2. Objective-C 을 활용한 옵셔널

@objc protocol Animal {
    @objc func doMoreCry()
}

// 에러
class Cat : Animal{
    
}

 

위와 같이 @objc로 프로토콜을 선언할 수 있는데

objc의 경우 자체적으로 옵셔널이 존재한다.

 

@objc protocol Animal {
    @objc optional func doMoreCry()
}

class Cat : Animal{
    
}