Extension과 Protocol은 Swift에서 자주 사용되는 기능이다. 값에 접근이 불가함에도 Extension으로 추가 기능을 구현할 수 있다.
Extension
- class, struct, enum 확장 가능
- 원본 소스에 접근할 수 없어도 사용가능
- Objective-C의 category와 유사한 기능
- 접근제어 가능
- 가능한 것들
- computed property 추가
- method 추가
- initializer 추가
- designated intializer, deinitializer 추가 불가
- 새로운 initializer, convenience initializer 추가 가능
- 추가된 initializer에서 default initializer, memberwise initializer 호출 가능
- subscript 추가
- nested type 추가
- 특정 protocol의 confirm
- protocol 확장