본문 바로가기
Swift 개발 이야기

Protocol Default Implementation in Swift

by 방화동한량 2020. 4. 10.
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)
    }

}

 

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

 

그럼 다음 시간에 또 만나요

 

안녕~~~~~