apple/iOS, UIKit, Documentation

Swift Protocol (@objc, extension 기본 구현)

lgvv 2022. 1. 31. 02:42

Swift Protocol (@objc, extension 기본 구현)

 

프로코콜을 작성할 때 @objc 키워드를 이용하면 optional 처리하여 채택하는 쪽에서 기본 구현을 하지 않아도 되었음.

 

근데 개발을 하다 보니까 @ojbc를 사용하지 않으면서 처리할 수 있는 방법이 없을까 찾아보기 시작

근데 UITableViewDelegate를 까보니까 내부 구현이 Swift인데, 기본 구현을 강제하지 않음.

 

그러니까 프로토콜 구현에 @objc 없이 사용 가능

 

해결

Swift로 작성할 때는 protocol의 extension을 추가해 메서드를 구현해주면 됨

 

관련 개념으로는 Mixin이 있음 참고에 링크 추가

protocol MyInterface { 
    func add()
    func remove()
}

extension MyInterface { 
    func add() { }
}

class MyFeature: MyInterface { 
    func remove() { }
    
    // func add() { } 구현하지 않고 호출할 경우 MyInterface에 extension에 구현된 코드를 호출
}

 

 

 

(참고)

https://rldd.tistory.com/689

 

Swift Mixin and Trait

Swift Mixin and Trait iOS 프로그래밍에서 주로 사용되는 언어는 Swift로 다중 상속을 지원하지 않음.Swift에서는 인터페이스(Interface)를 프로토콜(protocol)로 사용하고 있어서 프로토콜이라는 용어와 인

rldd.tistory.com