일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Clean Code
- Human interface guide
- SWIFT
- Observable
- uitableview
- HIG
- UITextView
- RxCocoa
- uiscrollview
- swiftUI
- 리펙토링
- 리펙터링
- 애니메이션
- rxswift
- UICollectionView
- 리팩토링
- ribs
- combine
- ios
- Xcode
- MVVM
- collectionview
- map
- swift documentation
- Protocol
- clean architecture
- 클린 코드
- tableView
- 스위프트
- Refactoring
- Today
- Total
목록Some (5)
김종권의 iOS 앱 개발 알아가기
generic과 opaque type 개념generic은 타입의 유연성을 제공하여 사용하는쪽에서 타입을 정하게끔하는 방법ex) generic을 사용하는 가장 대표적인 예제 - Stack 구현struct Stack { private var elements: [Element] = [] mutating func push(_ element: Element) { elements.append(element) } mutating func pop() -> Element? { elements.popLast() } func peek() -> Element? { elements.last } func isEmpty()..
any와 some 키워드 any와 some키워드는 type erase 방법 type erase: 코드의 추상화를 위해서 구체적인 타입을 지우는 것 3가지 메소드의 차이점? 3가지 모두 런타임에 타입이 결정되므로 dynamic dispatch로 동작 f2는 any를 붙여줌으로써 프로토콜을 사용하면 dynamic dispatch가 될것이라는 것을 명시적으로 표현했고 Swift6.0부터는 any키워드를 붙이지 않으면 컴파일 에러가 나게 변경 예정 (참고) f3도 원래는 사용하던 시점이 있었지만 any가 등장하면서 some을 any로 써도 무방하게끔 변경됨 (참고) protocol P {} func f1(p: P) { } func f2(p: any P) { } func f3(p: some P) { } any와 ..
Optional 타입 Optional 타입은 제네릭스를 받고, 그 제네릭스는 Optional 안에 감싼 값을 의미 Optional 타입은 enum이며, 2개의 case가 존재 none: 값이 없는 case some(Wrapped): 값이 있는 case enum Optional: ExpressibleByNilLiteral { case none case some(Wrapped) } 조건문에서 unwrap 방법 .some으로 접근 변수?로 접근 let optionalString = Optional("jake") switch optionalString { case .none: print("this is nil") case let .some(value): print("some value = ", value) } ..
* 패턴 매칭에서의 some 키워드 (optional unwraping에 사용되는 some 키워드는 이 포스팅 글 참고) Opaque Types (불투명 타입) 불투명 타입 단어 그대로 리턴 타입의 유형을 감추는 방법 protocol앞에 some 키워드를 붙여서 사용 some + { 어느 protocol... } computed property와 method에만 사용이 가능 반환 타입을 구현하는 쪽에서 마음대로 정할 수 있는 방법 ex) SwiftUI에서는 some 키워드를 computed property인 body에 사용 body 구현부에 들어가는 반환타입은 View 프로토콜을 준수하고 있으면 무엇이 오든 ok. struct ContentView: View { var body: some View { ..
@unknown이란? enum타입을 접근하는 switch-case문에서 사용되는 키워드 추가적인 case가 생겼을 때, 기존에 switch-case문에서 해당 case를 선언하지 않고 @unknown default로 선언해 놓으면 사용하는 쪽에서 warning 메시지를 받아볼 수 있어 인지할 수 있게끔 하는 키워드 예시) switch문에서 case에 대한 모든 조건을 선언하면 컴파일 에러와 워닝이 발생하지 않고 정상적인 케이스 enum Color { case blue(name: String, alpha: CGFloat) case green(name: String, alpha: CGFloat) } let color = Color.blue(name: "blue", alpha: 0.5) switch color..