[Swift] Extension
2022. 9. 27. 01:27
참조 : Swift 스위프트 프로그래밍 3판 Swift 5, 저자 야곰 (한빛미디어) , The Swift Programming Language Swift 5.6 Edition (iBooks)(https://books.apple.com/kr/book/the-swift-programming-language-swift-5-6/id881256329)
Extension
- Swift의 강력한 기능 중 하나
- 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있음
- 기능을 추가하려는 타입을 구현한 소스 코드를 알지 못하거나/볼 수 없어도, 타입만 안다면 그 타입의 기능 확장 가능
- Objective-C의 카테고리와 유사
- Swift의 익스텐션이 타입에 추가할 수 있는 기능
- 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티
- 타입 메서드 / 인스턴스 메서드
- 이니셜라이저
- 서브스크립트
- 중첩 타입
- 특정 프로토콜을 준수할 수 있도록 기능 추가
- 타입에 새로운 기능을 추가할 수 있지만, 기존에 존재하는 기능을 재정의할 수 없음
- 클래스의 상속 vs extension
상속 | extension | |
확장 | 수직 확장 | 수평 확장 |
사용 | 클래스 타입에서만 사용 | 클래스, 구조체, 프로토콜, 제네릭 등 모든 타입에서 사용 |
재정의 | 재정의 가능 | 재정의 불가 |
- 외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 사용
- 따로 상속 X, 구조체와 열거형에도 기능을 추가할 수 있으므로 매우 편리함
- 모든 타입에 적용 가능
- 프로토콜과 함께하면 굉장희 강력한 기능을 사용 가능
Extension 문법
- extension 키워드를 사용하여 선언
- 기존에 존재하는 타입이 추가로 다른 프로토콜을 채택할 수 있도록 확장할 수도 있음
728x90
'iOS > Swift' 카테고리의 다른 글
[Swift] 접근제어 (0) | 2022.09.28 |
---|---|
[Swift] 인스턴스 (0) | 2022.09.28 |
[Swift] 상속 (0) | 2022.09.25 |
[Swift] 서브스크립트 (2) | 2022.09.22 |
[Swift] print(_:separator:terminator:) (0) | 2022.09.21 |