Swift 공식문서 읽기...Day18

김민종·2021년 9월 4일
0

Swift Doc

목록 보기
18/26

Extensions
익스텐션을 이용해 이미 존재하는 클래스,열거형 혹은 프로토콜에 기능을 추가할 수 있다. 이러한 기능은 원본코드를 몰라도 기능을 확대 시킬 수 있다.

스위프트의 익스텐션은

  • 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티를 추가할 수 있다.
  • 인스턴스 메소드와 타입메소드를 정의할 수 있다.
  • 새로운 이니셜라이저를 제공한다.
  • 서브스크립트를 정의한다.
  • 중복타입을 선언하고 사용한다.
  • 특정 프로토콜의 타입을 만들 수 있다.

Extension Syntax
익스텐션은 extension키워드를 사용한다. 하나의 익스텐션에 여러개의 프로토콜을 따르게 확장 가능하다.

Computed Properties
익스텐션을 통해 이미 존재하는 타입에 계산된 인스턴스 프로퍼티와 타입프로퍼티를 추가 할 수있다. 원문에서 예시는 스위프트의 Double값에 각종 단위를 붙혀 미터로 변경하는 계산된 프로퍼티이다. 프로퍼티 변수 앞에 .을 붙혀 접근 한다. 예시는 미터기준이므로 1.m의 값은 더블값으로 계산되어 1.0으로 반환된다. 해당 프로퍼티는 읽기 전용이라 get키워드가 생략가능하다.

Initializers
익스텐션을 이용해 이미 존재하는 타입에 새로운 이니셜라이저를 추가할 수 있다. 이것은 커스텀 타입의 파라미터를 넣을수 있도록 가능하다.
익스텐션은 새로운 편리한 이니셜라이저를 추가할 수있지만 지정된 이니셜라이저나 디이니셜라이저는 추가 불가능하다. 지정된 이니셜라이저와 디이니셜라이저는 항상 오리지널 클래스에서 구현되어야 한다.
만약 다른 모듈에 선언되어 있는 구조체에 이니셜라이저를 추가하는 익스텐션을 사용한다면 새 이니셜라이저는 모듈에 정의된 이니셜라이저를 호출하기 전까지 self에 접근할 수 없다.

Methods
익스텐션은 이미 존재하는 타입에 인스턴스 메소드와 타입 메소드를 추가할 수 있다.

Mutating Instance Methods
익스텐션에 추가된 인스턴스 메소드는 인스턴스 self를 변경할 수 있다. 구조체나 열거형 중 자기자신을 변경하는 인스턴스는 mutating키워드를 붙혀야 한다.

Nested Types
익스텐션은 이미 존재하는 클래스, 구조체, 열거형에 중첩 타입을 추가할 수 있다.

profile
신입 ios개발자입니다!

0개의 댓글