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
코딩키
'아이폰 개발 > ios 개념&튜토리얼' 카테고리의 다른 글
ios LFLiveKit 라이브러리 이용해서 RTMP 구현 예제 (0) | 2022.09.16 |
---|---|
ios MQTT 통신 - swift로 구현하기 (0) | 2022.09.14 |
ios collectionView Tag cell - 여러 옵션 선택하기 기능 구현 (0) | 2022.08.03 |
ios view Pager - 스와이프로 메뉴 처리하기 (code layout 구현) (0) | 2022.08.01 |
디스패치 큐 사용시 주의 사항 (0) | 2021.07.03 |