swift 프로퍼티 정리 (lazy var , 연산프로퍼티, 저장 프로퍼티)

swift 프로퍼티 정리 (lazy var , 연산프로퍼티, 저장 프로퍼티)

 

● Stored Property(저장 프로퍼티)

 var로 선언하면 "변수"를 저장

 let으로 선언하면 "상수"를 저장

 

 lazy 프로퍼티는 항상 변수로서 선언즉, var로 선언!

 게으른 저장 프로퍼티는 "값이 필요할 때" 초기화를 함.

 https://zeddios.tistory.com/243

 

 

 ● Computed Property(연산 프로퍼티)

 연산프로퍼티는 값을 "저장"하기 보다는 연산을 한다 - (연산결과를 저장해줄 저장프로퍼티 필요함)

 반드시 var로 선언되어야 한다.(값이 고정되어 있지 않기때문)

 1. 클래스, 구조체, 열거형에 사용된다.

 2. var로 선언해야한다.

 3. 클래스, 구조체, 열거형에 값을 저장할 저장프로퍼티가 하나 있어야한다.==> 연산프로퍼티 자기 자신을 리턴하거나 값을 지정할 수 없다.

 4. get, set을 동시에 구현 가능하며, get만 구현하는 것도 가능. 하지만 set만 구현하는 것은 안된다!

 5. set의 파라미터를 생략할 수 있으며 생략했을 시, newValue라는 키워드를 사용한다.

 

 https://zeddios.tistory.com/245?category=685736

 

 

 ● 프로퍼티 옵저버

 프로퍼티 옵저버(willSet, didSet)은 "저장프로퍼티"에 추가될 수 있다

 willSet은 값이 저장되기 직전에 호출

 didSet은 새로운 값이 저장된 직후에 호출

 

 https://zeddios.tistory.com/247?category=685736

 

 

 ● Type Property(타입 프로퍼티)

 1. 프로퍼티를 "타입 자체"에 연결할 수 있는데, 그게 타입 프로퍼티야

 2. 타입프로퍼티에는,  저장 타입 프로퍼티와 연산 타입 프로퍼티가 있어!

 3. 저장 타입 프로퍼티는 상수/변수 일 수 있어!! -> let / var로 선언이 가능, 또한 무조건 기본값을 줘야해,  또!! 처음 엑세스 할 때는 초기화를 게으르게해!! 하지만 lazy키워드는 필요없어 ㅎㅎ

 4. 연산 타입 프로퍼티는 무조건 변수로 선언되어야해 -> var로만 선언이 가능

 

 출처: https://zeddios.tistory.com/251?category=685736 [ZeddiOS]

 

 

 

 프로토콜 1

 

 0.프로토콜은 메소드, 프로퍼티등을 "정의"만 하고, 이 프로토콜을 채택한 곳에서 "구현"을 한다

 1. 프로토콜은 프로퍼티가 저장 프로퍼티인지, 연산 프로퍼티인지 명시하지 않는다.

 2. 대신 읽기만 가능한지, 읽기/쓰기 모두가 가능한지 명시해야한다 ( setter만 있는건 없다고 그랬죠?)

 3. 프로퍼티 요구사항은 항상 var로 선언되어야 한다.

 프로토콜에서 gettable(읽기전용)만 요구하면, 이 요구사항을 저장프로퍼티로 선언하든, 연산프로퍼티로 선언하든 상관없다

 

 출처: https://zeddios.tistory.com/255 [ZeddiOS]

 

 

 코더블 - 인코딩 디코딩

 https://zeddios.tistory.com/373

 

 코딩키

 https://zeddios.tistory.com/394