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)
}
}
프로토콜 기본 기능 구현을 통해 좀 더 깔끔한 코드를 사용할 수 있게 될 것 같습니다.
그럼 다음 시간에 또 만나요
안녕~~~~~
'Swift 개발 이야기' 카테고리의 다른 글
Swift 의 Result 타입에 대해서 알아봅시다 (0) | 2020.05.11 |
---|---|
AutoLayout Debugging in UITableViewCell (0) | 2020.04.17 |
예제로 살펴보는 MVI Design Pattern with RxSwift (2) | 2020.04.08 |
예제로 살펴보는 MVVM Design Pattern with RxSwift (0) | 2020.04.07 |
iOS13 이상에서 스토리보드 없이 시작하기! (0) | 2020.04.03 |