iOS 프로젝트를 진행하면서 정말 수도 없이 봤던 Extension.
처음 사용해본 건 ViewController에 UITableViewDelegate, UITableViewDataSource 프로토콜을 채택할 수 있도록 확장하기 위해서였다. 이 외에도 기본 Type들에 원래 있는 기능은 아니지만, 자주 사용되는 기능들을 모아놓기 위해 사용하기도 했었다. UIView에 그림자를 설정할 수 있도록 하는 메소드를 만들어 두었던 것이 대표적인 예시다.
Extension
Extensions add new functionality to an existing class, structure, enumeration, or protocol type. This includes the ability to extend types for which you don’t have access to the original source code (known as retroactive modeling).
Extension이란 Class, Structure, Enumeration, Protocol 타입들에 새로운 기능을 추가할 수 있는 문법이다. 특히 원래 코드에 접근할 수 없는 상황에서 Extension은 유효하게 사용될 수 있다.
Extension은 새로운 기능은 추가할 수 있지만, 원래 있던 기능을 재정의할 수는 없다. 이것이 Class의 Inheritance(클래스의 상속)과 다른 점이다.
extension SomeType {
// new functionality to add to SomeType goes here
}
extension SomeType: SomeProtocol, AnotherProtocol {
// implementation of protocol requirements goes here
}
Extension이 추가할 수 있는 기능은 다음과 같다.
- Computed Properties(연산 프로퍼티)
- Initializers(이니셜라이저)
- Methods (메서드)
- Subscripts (서브스크립트)
- Nested Types (중첩 타입)
- Protocol (프로토콜) - 특정 프로토콜을 준수할 수 있도록 설정할 수 있다.
Reference
'Development > Swift' 카테고리의 다른 글
[Swift] 필수 개념 (feat. Coding Test) (0) | 2022.03.16 |
---|---|
[Swift] Higher Order Function / 고차함수 (0) | 2022.02.25 |
[Swift] Closure (0) | 2022.02.17 |
[Swift] Structures and Classes (0) | 2021.12.14 |
[Swift] Optional (0) | 2021.12.07 |