일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 애니메이션
- swift documentation
- UICollectionView
- ios
- 리펙터링
- Protocol
- Human interface guide
- RxCocoa
- Observable
- clean architecture
- 리펙토링
- tableView
- collectionview
- 스위프트
- 리팩토링
- Clean Code
- uitableview
- 클린 코드
- swiftUI
- Refactoring
- map
- Xcode
- ribs
- SWIFT
- MVVM
- UITextView
- uiscrollview
- rxswift
- combine
- HIG
- Today
- Total
목록@dynamicMemberLookup (4)
김종권의 iOS 앱 개발 알아가기
@dynamicMemberLookup 개념 컴파일 타임에 정의하지 않은 property에 대한 접근을 런타임에 처리하도록 해주는 역할 dynamic member lookup라고 명칭한 이유: 컴파일 타임이 아닌 런타임 기준으로(dynamic) 프로퍼티에 dot으로 접근(member lookup)한다는 의미 런타임에 접근하게 해주는데, 이 때는 dot으로 접근하게끔 하는 역할 @dynamicMemberLookup을 선언하면 subscript(dynamicMember key: String) -> String 필수 구현이 필요 ex) Person이라는 구조체에 @dynamicMemberLookup을 사용 의미: Person이라는 프로퍼티에 접근할 때, 이 인스턴스를 사용하는 쪽에서 런타임에 생성되는 프로퍼티에..
Reactive Extension을 사용하기 위해 알아야하는 개념 KeyPath, WritableKeyPath, ReferenceWritableKeyPath, DynamicMemberLookup 개념 포스팅 글 Observable, Observer, Producer, ControlEvent, Binder 개념 (RxSwift, RxCocoa) 포스팅 글 Reactive란? rx 네임 스페이스의 정체 아래와 같이 RxSwift의 Reactive 파일을 보면, ReactiveCompatible에 rx 연산 프로퍼티가 존재하고 getter부분에는 타입을 리턴 ReactiveCompatible을 채택하면 해당 클래스에서는 rx프로퍼티로 접근할 수 있고, rx프로퍼티에서는 base인스턴스를 가지고 있으니, 최종적..
KeyPath 특정 속성에 대한 path정보를 가지고 있는 key값 (KeyPath 인스턴스를 통해 해당 값에 접근이 가능) // KeyPath 문법: `\`키워드 + 유형 + 프로퍼티 이름 let nameKeyPath: KeyPath = \Person.name let person = Person(age: 12, name: "jake") print(person[keyPath: nameKeyPath]) // jake KeyPath 활용 - RxSwift의 Observable 구독 할때 특정 property를 가져오기 위해 map에서 사용 (간결성 향상) struct Person { var age: Int var name: String } var personObservable: Observable { Obs..
* KeyPath부터 구체적인 dynamic member lookup 개념은 이글 참고 dynamic member lookup @dynamicMemberLookup 키워드를 class, structure, enum, protocol에 적용하여 subscript(dynamicMember:)를 필수로 구현하게하여 런타임시점에 이름으로 dot ‘.’키워드로 접근 가능하도록 하는 방법 dot ‘.’ 키워드 사용하여 이름으로 접근 가능 주의: extension에는 @dynamicMemberLookup 적용 불가 ex) dyanmicMemberLookup을 사용하지 않고 subscript 구현 struct Person1 { var info: [String: String] // name: gender subscrip..