Swift 개발 이야기

Protocol Default Implementation in Swift

방화동한량 2020. 4. 10. 13:47
728x90

안녕하세요 여러분

 

오늘은 간단한 스위프트 관련 주제를 들고 와봤습니다.

 

바로 Protocol Default Implmentation 인데요!

 

저도 알게 모르게 사용하던 것이었는데 헷갈리지 않게 정리를 좀 해보도록 하겠습니다.

 

프로토콜은 기본값을 구현해놓지 않고 해당 프로토콜을 채택한 부분에서 관련된 기능을 구현하기 위해 사용하는 경우가 저는 좀 많았는데요.

 

Default Impementation 을 사용하게 되면 마치 class 에서 부모의 함수를 사용하는 것과 비슷하게 구현을 할 수가 있게 됩니다.

 

바로 extension 으로 구현을 하면 되는데요.

 

아래와 같이 작성하시면 됩니다.

 

protocol CustomProtocol {
	func say(msg: String) 
}

extension CustomProtocol {
	func say(msg: String) {
    	print(msg)
    }
}

 

이제 해당 프로토콜을 채택한 부분에서 say 함수를 구현하지 않게 되면 extension 에서 구현해 놓았던 코드가 실행이 됩니다.

 

참 쉽죠?

 

class 를 통해 상속을 받는 경우에는 부모 자식의 경우에서만 상속을 받아 사용할 수 있는 반면에, 프로토콜의 경우 그 어느 부분에서나 관련된 프로토콜을 채택하면 say 함수를 바로 사용할 수 있으니 좀 더 유용하게 사용할 수 있을 듯 합니다.

 

만약 say 함수의 기능을 별도로 구현하고 싶다면 기존과 동일하게 채택한 부분에서 say 함수의 정의를 다시 구현해주면 되겠습니다.

 

class MessageViewController: UIViewController {

//...


}

extension MessageViewController: CustomProtocol {
	
	func say(msg: String) {
    	print("Message:" + msg)
    }

}

 

프로토콜 기본 기능 구현을 통해 좀 더 깔끔한 코드를 사용할 수 있게 될 것 같습니다.

 

그럼 다음 시간에 또 만나요

 

안녕~~~~~