확장 extension
기존의 class, struct, enum, protocol 타입에 새로운 기능을 추가할 수 있는 키워드입니다.
타입의 원본 코드를 수정하지 않고도 수평적인 기능을 확장 할 수 있어 코드의 유지 보수와 가독성이 향상됩니다.
- extension 키워드를 사용하여 기존 타입을 확장할 수 있습니다.
- 하나 이상의 프로토콜을 extension으로 추가해 적용할 수 있습니다. 이를 통해 기존 타입을 수정하지 않고 프로토콜 요구사항을 구현할 수 있어 코드 유지보수가 편리해집니다.
- 하나의 타입에 extension 여러 번 가능합니다.
- 확장할 수 있는 것들은 아래와 같습니다.
- 연산 프로퍼티
- 확장된 곳에서 저장 프로퍼티는 사용할 수 없습니다.
- 메소드
- 새로운 초기화 init (클래스의 경우 편의생성자 convenience init만 추가 가능)
- 중첩된 타입(Nested Type)
- 연산 프로퍼티
공식문서
확장 (Extensions) 은 기존의 클래스, 구조체, 열거형, 또는 프로토콜 타입에 새로운 기능을 추가합니다. 이것은 기존 소스 코드에 접근 권한이 없는 타입을 확장하는 기능이 포함됩니다 (소급 모델링 (retroactive modeling) 이라고 함). 확장은 Objective-C의 카테고리와 유사합니다 (Objective-C 카테고리와 달리 Swift 확장은 이름이 없습니다).
Swift에서 확장은 다음을 수행할 수 있습니다:
- 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티 추가
-
인스턴스 메서드와 타입 메서드 정의
-
새로운 초기화 구문 제공
-
서브 스크립트 정의
-
새로운 중첩된 타입 정의와 사용
-
기존 타입이 프로토콜을 준수하도록 함
extension SomeType {
// new functionality to add to SomeType goes here
}
extension SomeType: SomeProtocol, AnotherProtocol {
// implementation of protocol requirements goes here
}
소급 모델링의 예시
extension Int {
var squared: Int {
return self * self
}
}
'내일배움캠프 iOS' 카테고리의 다른 글
iOS) TIL #12 (TIL #9 관련) 계산기 코드 구현하기 - 피드백 및 수정 (0) | 2024.11.05 |
---|---|
iOS) TIL #11 프로토콜(Protocol) (4) | 2024.11.04 |
iOS) TIL #9 2주차 과제 - 계산기 코드 구현하기 (0) | 2024.10.31 |
iOS) TIL #8 학습법 및 알고리즘 특강 (0) | 2024.10.30 |
iOS) TIL #7 swift 기본 문법 공부(상속,재정의) (1) | 2024.10.29 |