일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- Refactoring
- RxCocoa
- collectionview
- 리펙토링
- 스위프트
- 애니메이션
- Clean Code
- HIG
- combine
- map
- uitableview
- Human interface guide
- Observable
- tableView
- uiscrollview
- ios
- 클린 코드
- Protocol
- UITextView
- ribs
- UICollectionView
- rxswift
- clean architecture
- 리팩토링
- MVVM
- Xcode
- swiftUI
- SWIFT
- swift documentation
- Today
- Total
목록hashable (3)
김종권의 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..
* 해시의 기본 개념은 이전 포스팅 글 Hashable, 해시 참고 Hashable 사용 방법 일반적으로 Hashable프로토콜을 따르면 스위프트의 기본 타입(String, Int, ...)등은 이미 적용 var nameSet = Set() self.nameSet.insert("jake") self.nameSet.insert("jake") print(self.nameSet) // ["jake"] struct, enum, class와 같은 것들은 따로 hashValue를 정의해주지 않으면 해싱이 적용되지 않는 것을 주의 ex) id가 같으면 같은 사람으로 보고 싶지만, 아래처럼 age가 다르므로 set에 id가 같은 인스턴스가 중복으로 들어가는 케이스가 존재 struct Person: Hashable { ..
Hash란? hashing: 임의의 길이를 갖는 데이터(key)를 고정된 길이의 데이터(value)로 매핑하는 의미 hash function: key > value 매핑하는 함수 hash code: index값 hash value: hash code에 해당되는 value 값 collision(충돌) chaining으로 해결: hash function을 통해 얻은 hash code값에 이미 데이터가 존재하는 경우 > linked list를 통해 저장 LInear Probing으로 해결: hash code += 1 이동 Rehashing: Hash Table Hashable Hashing 기능 프로토콜 - 임의의 길이를 갖는 데이터(key)를 고정된 길이의 데이터(value)로 매핑 사용 Dictionary..