일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- coordinateSpace
- Dispatch.main.sync
- RxSwift
- Apple Certificate
- RxCocoa
- 로버트마틴형
- windowScene
- iOS 버전 점유율
- UICoordinateSpace
- 대머리깃허브
- memory safety
- 메모리 접근 충돌
- 잡초가득블로그
- iOS Target
- Ribs
- conflicting access to memory
- in-out
- Large File Storage
- RIBs Tutorial
- ios
- Github file size
- Concurrent
- Automatically manage signing
- App Signing
- Git Large File Storage
- 클린아키텍쳐
- SWIFT
- Dependency Rule
- swiftdocs
- rib
- Today
- Total
빙수왕의 개발일지
protocol, enum의 property에 관해 본문
사건의 발단
enum에서 CustomStringConvertible을 준수하기 위해 var description을 만들어주었음 -> 에러 발생
stored property(저장 프로퍼티)를 enum에 넣을 수 없다는 에러가 남..
*(enums must not contain stored properties)
그치 맞지. stored property는 enum에서 만들 수 없다.
근데 찾아보니 다른놈들은 잘만 enum에서 CustomStringConvertible을 준수하고 description도 써줬다.
알고보니 var description = "aaa" 이렇게 저장프로퍼티로 구현하고있었다.ㅎㅎ..
다른사람들은 var description: String = { "aaa" } 이렇게 해줌.
새로 알게된 점
- CustomStringConvertible: description을 프로퍼티로 가지는 프로토콜. 이걸 준수하는 클래스(A)의 객체(a)를 print(a)하면 그놈의 값(a)대신 description값이 나온다.
- enum, extension은 stored property를 가질 수 없고, computed property만 가질 수 있다.
- protocol에서는 property를 선언할 때 stored인지 computed인지 정하지 않는다. 그저 get set 블록을 통해 최소 조건만 써준다.
- 그럼 구현하는 쪽에서 어떻게 구현하냐에 따라서 정해지는건데, enum은 computed를 가질 수 없으므로 무조건 var키워드(let은 안됨!!)를 사용해서 연산 프로퍼티로 구현해주여야 한다.
'개발 > iOS' 카테고리의 다른 글
엔터프라이즈 빌드는 성공하는데 아카이빙에 실패할 때 (0) | 2021.02.10 |
---|---|
UIView의 layer에 대하여 (0) | 2020.12.06 |
갑자기 잘 보이던 imageView가 다른핸드폰에서 안보인다면? (0) | 2020.12.02 |
init에서 변수 값을 넣어줘도 didSet은 실행되지 않는다. (0) | 2020.11.29 |
Cell에서 Custom Initializer을 사용하고 싶은데 방법이 없을까.. (0) | 2020.11.29 |