Extension
정의
존재하는 클래스, 구조체, 열거형, 프로토콜 타입에 새롭게 기능적인 부분을 추가할 수 있고 요구사항을 구현하는 데도 사용할 수 있는 문법
역할
이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능을 부여할 수 있는 방법
구조체, 클래스, 열거형, 프로포콜의 추가 구현부, 제약사항, 기능 등을 정의
특정 타입의 기능 및 준수하는 프로토콜별 구현부를 분리해서 보다 코드 가독성을 높일 수 있음
특징
- Objective-C의 category와 유사하지만 다른점은 "별도의 이름을 갖지 않음"입니다.
- 타입의 새로운 기능을 추가할 수 있으나, 기존 기능의 오버라이딩은 불허용
Extension이 타입에 추가할 수 있는 기능들
- 계산 프로퍼티, 계산타입 프로퍼티 추가 기능
- 인스턴스 메서드, 타입 메서드의 정의
- 새로운 생성자의 제공
- subscripts 접근 방식 정의
- 중첩타입의 정의 및 사용
- 특정 프로토콜을 준수하는 현존 타입 정의
참고 → 다시 보기
Swift - 프로토콜, 익스텐션 - yagom's blog