제네릭은 스위프트에서 가장 강력한 기능 중 하나로 스위프트의 표준 라이브러리는 대부분 제네릭 코드로 만들어졌습니다. 스위프트에 제네릭이 없었으면 어떨까요 위와 같이 버퍼 구조체가 있다고 가정합시다. 각 요소를 index로 가져오는 방법이 있지만 리턴 타입을 무엇으로 만들어야 할까요 제네릭이 없다면 우리가 버퍼에 넣고 싶은 것을 표현할 수 있는 타입인 Any로 넣어야 합니다. // Any는 함수 타입을 포함하여 모든 타입의 인스턴스를 나타낼 수 있습니다. 하지만 Any로 넣게 되면 꺼내서 사용할 때 다른 타입일 수 있어 오류가 발생하기 쉽습니다. 예를 들어 위와 같이 문자열 버퍼에 정수를 넣으면 안 되겠죠. 그럼 메모리에는 어떻게 표현될까요. 우리가 원하는 메모리 모습은 하늘색 박스와 같은 모양입니다. 문..
수요일에 받은 코드 리뷰를 통해 좋은 말씀들을 많이 해주셔서 하나씩 학습해 정리해보려 합니다. 그중에서도 제네릭과 프로토콜을 활용해 dequeueReusableCell을 어떻게 처리하는지 알아보았습니다. 먼저 테이블 뷰에 테이블 뷰 셀을 나타내게 하려면 어떻게 하시나요. 테이블 뷰는 데이터 자체를 관리하지는 않고, 표현되는 데이터만 관리합니다. 그래서 우리는 UITableViewDataSource를 채택해 필수 메소드를 적어줍니다. 이 친구들이 관리를 합니다. 아래는 UITableViewDataSource에 필수 메소드를 작성한 코드입니다. // Return the number of rows for the table. override func tableView(_ tableView: UITableView..
raywenderlich YOUTUBE영상을 보다가 신기한 게 있어서 정리하려 합니다. (처음 들어본 팬텀 타입 ,,하하) 여기 있는 loopup 딕셔너리는 주와 수도가 연결되어 있습니다. 하지만 직관적으로 눈에 들어오진 않습니다. 이것을 개선하기 위해선 typealias를 사용할 수 있습니다. String타입 대신에 State와 Capital로 변경하면 지금 보단 직관적입니다. 조금 더 직관적으로 보이죠 ,, 😦 이렇게 하면 loopup딕셔너리는 주와 수도로 이뤄진 딕셔너리로 이전보다 파악하기 쉬워집니다. 자 그럼 주와 수도를 출력해보는 test함수를 만들고 출력해봅시다. 이렇게 test 함수를 호출했는데 출력은 The capital of Juneau is Alaska라고 출력됩니다. (주노의 주는 알..
Swfit의 Shuffle( ) "Use the shuffle() method to randomly reorder the elements of an array."shuffle()은 배열의 순서를 랜덤화 하는 함수입니다. 시간 복잡도는 O(n)이네요. WWDC2018 Generic을보다가 shuffle()이 어떻게 구현되었는지 언급이 되길래 정리하고자 합니다. 사용된 fisher yates shuffle 알고리즘은 오래된 알고리즘입니다. 위에서 shuffle()은 배열을 랜덤화 할때 사용하는 함수라고 했으니array.shuffle()을 해주고 print를 찍어보면 잘 섞여서 나오는걸 확인할 수 있습니다.위 print문이 어떻게 찍혔는지 과정을 살펴봅시다.먼저 컬렉션의 첫 번째 요소에 대한 인덱스부터 시작합..
- Total
- Today
- Yesterday
- ios
- leetcode
- 알고리즘
- stanford SwiftUI
- objc
- 책 추천
- 머신러닝
- rxswift
- Algorithm
- ReactiveX
- 책 후기
- swiftUI
- objective-c
- Animation
- 딥러닝
- 스위프트UI
- RX
- swift5
- 애니메이션
- string
- Xcode
- 책
- 독서
- iOS SwiftUI
- ARC
- Deep learning
- 스위프트
- SWIFT
- 문자열
- wwdc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |