본문 바로가기
FRONT-END/iOS

Swift 확장(Extensions)

by 랄라J 2023. 8. 1.

복습 : 상속은 본질적으로 성격이 비슷한 타입을 새로 만들어 데이터를 추가하거나 기능을 변형시켜 사용하는 것을 의미

 

확장 (Extension)

  • 클래스/구조체/열거형에 모두 가능하며 extension 키워드를 사용
  • 현재 존재하는 타입에 기능(메서드 형태)을 추가해 사용하는 것을 의미, 수평 확장
    • 본질적으로 기존의 메서드 테이블 외 따로 메서드를 추가하는 것
    • 기존 메서드 재정의는 불가능
      • 단, @objc 키워드를 사용하면 가능해지긴 함
  • 확장이 정의되기 전 생성된 경우에도 기존 인스턴스에서 새 기능 사용 가능
  • 장점은 애플이 미리 만들어놓은 클래스/구조체/열거형 같이 원본 소스 코드에 대한 엑세스 권한이 없는 유형을 확장해 내가 원하는 메서드를 사용할 수 있도록 구현이 가능함 (소급 모델링 retroactive modeling)
class SomeType {
}

extension SomeType {
    func doSomeThing() {
    }
}

 

타입의 확장 가능 멤버의 종류 (메서드 형태만 가능)

  • (타입) 계산 속성, (인스턴스) 계산 속성
  • (타입) 메서드, (인스턴스) 메서드
  • 새로운 생성자
    • 클래스의 경우 편의 생성자만 추가 가능
    • 구조체의 경우 지정생성자를 호출하는 형태로도 생성자 구현 가능
  •  서브스크립트
  • 새로운 중첩 타입 정의 및 사용
  • 프로토콜 채택 및 프로토콜 관련 메서드
반응형

댓글