블로그

[Swift] 프로퍼티

게시 2분

프로퍼티 관련해서 알아야할게 3가지 정도로 보인다.
Property, KeyPath, Property Observer(빨간색)

Property는 Stored, Computed, Type(파란색)으로 나뉘고 밑의 초록색이 관련해서 알아야할것들이다.
'요약만함'

Property

Stored Property

  1. 값이 저장됨

  2. 클래스에서 저장 프로퍼티는 initialize 구현이 필요하나 구조체는 아님.

  3. 구조체는 initialize를 자동으로 구현해줌

  4. 클래스에서 initialize 구현하지 않으려면, 초기값을 지정해주거나 옵셔널로 지정하면 됨

  5. lazy는 프로퍼티에 접근할 때 한번만 사용되는 인스턴스가 초기화됨(멀티스레드에서 여러번 초기화될수도 있음)

Computed Property

  1. 값을 저장하지 않고 프로퍼티를 불러오려하면 연산한 값을 반환함

  2. get set 구현을 통해 직관적으로 보이게함

Type Property

  1. 인스턴스를 사용하지 않고 타입으로 값에 접근할 수 있다해서 타입 프로퍼티임

(예를 들면 class A에서 A().x 와 같이 접근하지 않고 A.x로 접근함)

  1. static을 붙여서 타입 프로퍼티를 생성하고 유일한 값을 가짐

  2. 저장 타입 프로퍼티는 lazy 키워드가 없이도 지연연산됨(멀티스레드에서 단한번만 초기화됨이 보장)

KeyPath

KeyPath를 통해 프로퍼티의 위치만 참조할 수 있다.
그리고 이를 Subscript를 통해 프로퍼티에 접근시킬 수 있음.
또한 KeyPath를 통해 map, compactMap, filter에서 클로저 대신 사용해서 가독성 더 좋게할 수 있음.

Property Observer

프로퍼티의 값이 변경될 때 자동으로 함수가 출력되도록 할 수 있음
그 함수들은 willSet과 didSet으로 이루어져 있고,
willSet은 값의 변경 직전에 호출되고
didSet은 변경 직후에 호출됨

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub