새소식

iOS/Swift

[Swift] Extension

  • -
참조 :  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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.