모델 모델 MemoryGame은 에 들어오는 타입이 무엇인지 상관하지 않는다. (제네릭 사용) MemoryGame을 init 하면서 CardContent가 무엇인지 신경 쓰는 쪽이 모델을 위해 만들어준다. 아래 mutating func choose(card: Card)함수를 살펴보자. mutating func choose(card: Card) { print("card가 선택되었다 \(card)") let chosenIndex: Int = index(of: card) cards[chosenIndex].isFaceUp = !cards[chosenIndex].isFaceUp } 여기서 파라미터로 넘어오는 card는 let이기 때문에 상수이다. 우리는 in-place하게 array에 있는 카드의 속성을 변경하기..
현재 진행하는 프로젝트에서 API 리퀘스트를 날려 받아온 데이터를 디코딩하고 넣어줍니다. 프로퍼티가 새로운 데이터가 들어옴을 감지하면 tableView를 리로드 시켜줍니다. 사실 스위프트에서는 그냥 프로퍼티 옵져버를 사용하는데요. 오브젝티브씨에서는 KVO key value observing이라는 친구가 있습니다. KVO는 오브젝트 값의 변화를 통지, 감시하기 위한 구조입니다. 특정 인스턴스의 특정 프로퍼티가 변화했을 때를 파악해 그에 맞는 처리를 할 수 있습니다. 위에서 오브젝트 값의 변화를 통지, 감시한다라고 했죠. KVO를 사용하려면 먼저 NSObject를 상속받아야 합니다. 즉 클래스여야 합니다. KVO를 그림으로 나타내자면 아래와 같은 흐름입니다. 이제 실제로 사용해봅시다. KVO로그를 찍기 위해..
- Total
- Today
- Yesterday
- Xcode
- string
- 독서
- 딥러닝
- 머신러닝
- Algorithm
- RX
- rxswift
- 책
- 스위프트
- 문자열
- ARC
- SWIFT
- 알고리즘
- objc
- 책 후기
- iOS SwiftUI
- ReactiveX
- ios
- 스위프트UI
- leetcode
- 애니메이션
- 책 추천
- stanford SwiftUI
- swift5
- Animation
- swiftUI
- Deep learning
- objective-c
- 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 |