일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리팩토링
- uiscrollview
- Human interface guide
- Observable
- collectionview
- RxCocoa
- ios
- combine
- uitableview
- Xcode
- ribs
- 클린 코드
- tableView
- Refactoring
- HIG
- SWIFT
- map
- UICollectionView
- Protocol
- rxswift
- Clean Code
- MVVM
- 리펙터링
- swiftUI
- 리펙토링
- 애니메이션
- UITextView
- 스위프트
- clean architecture
- swift documentation
- Today
- Total
목록AnyHashable (2)
김종권의 iOS 앱 개발 알아가기
AnyHashable Hashable을 wrapping하고 있는 구조체 @frozen public struct AnyHashable { public init(_ base: H) where H : Hashable public var base: Any { get } public static func != (lhs: AnyHashable, rhs: AnyHashable) -> Bool } Hashable이 있는데 굳이 이를 wrapping한 AnyHashable을 만든 이유? associatedtype을 사용하는 프로토콜인, "제네릭 프로토콜"을 콜렉션 타입으로 설정하면 컴파일 에러 발생 Hashable은 제네릭 프로토콜이므로 Hashable을 감싸서 콜렉션 타입에 유연하게 사용하기 쉽도록 하기 위해서 Any..
existential any 개념 protocol에서 generic을 지정해줄 때 any 키워드를 사용하여 편리하게 generic 처리를 할 수 있는 것 protocol ABC { associatedtype MyType } // 기존 - 제네릭 선언해야함 func printValue(type: T) { print(type) } // any 키워드 사용 - 제네릭을 따로 선언해주지 않아도 됨 func printValue2(type: any ABC) { print(type) } protocol 타입 다루기 DIP원칙과 테스트에 용이한 구성을 위해서 데이터 모델을 protocol로 참조되게 설정 ex) 모델이 MyItem이고, 이 모델은 MyItemable 프로토콜을 따르게 한 후 사용하는쪽에서는 MyItem..