| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Protocol
- clean architecture
- ios
- Xcode
- combine
- Refactoring
- swift documentation
- tableView
- swiftUI
- RxCocoa
- map
- Observable
- uitableview
- ribs
- Human interface guide
- Clean Code
- collectionview
- 리펙토링
- HIG
- 리팩토링
- MVVM
- scrollview
- 애니메이션
- uiscrollview
- SWIFT
- 클린 코드
- 스위프트
- rxswift
- UICollectionView
- UITextView
- Today
- Total
목록2025/05 (4)
김종권의 iOS 앱 개발 알아가기
제네릭과 프로토콜제네릭컴파일 타임에 타입이 정의되므로 타입 안정성이 있고 성능이 높음(static dispatch)DI(Dependency Injection)에 취약함struct UserService { var items: [T] func firstItem() -> T? { return items.first }}프로토콜DI(Dependency Injection)에 유리함 (관련 글)dynamic dispatch이므로 성능이 안좋음struct UserService { var items: [UserRepresentable] func firstItem() -> UserRepresentable? { items.first }}static dispatch, ..
padding에 nil 할당의 의미padding을 설정할때는 nil이나 Double값을 할당 할 수 있는데, 차이가 존재padding에 nil을 할당하면 padding()과 같이 시스템에서 알아서 정해주는 default padding으로 세팅됨padding에 0을 할당하면 의미 그대로 여백을 주지 않는다는 의미그렇다면 뷰에 padding을 안썼을때 적용되는 것은?padding에 0을 할당한것과 동일주의) padding에 nil을 할당하면 padding을 안썼을때와 다르게, 시스템에서 알아서 정해주는 세팅이 되므로 주의할 것예시UI에서 토글을 누를때마다 padding 적용 여부를 보고 싶기 때문에 아래와 같은 if함수 정의extension View { @ViewBuilder func `if`( ..
중첩 case 커피를 구분하는 switch-case문이 있을때, associated value에 다른 타입이 있는 경우enum BeverageType { case coffee(coffeeType: CoffeeType)}enum CoffeeType { case latte}enum OrderInfo { case specialOrder(customerName: String, drink: BeverageType)}let order1: OrderInfo = .specialOrder(customerName: "jake", drink: .coffee(coffeeType: .latte))이것을 사용하는 주문 쪽에서는 타입이 여러개이므로 switch-case에서 아래처럼 여러 단계를 가져갈 수 있음Ord..
밀집된 코드와 분리된 코드코드 관점에서 밀집된 코드와 분리된 코드가 있는데 가끔 어떤 방식으로 코드를 구현해야하는지 고민이 될 때가 있음 cf) 응집도와 결합도: 흔히 알려진 개념인 응집도와 결합도는 모듈을 기준으로 한 모듈이 다른 모듈을 많이 의존한다면 결합도가 크고 응집도가 낮다고 함모듈 관점에서는 코드를 작성할때 모듈간에 최대한 모르게끔 하는 명확한 방법이 존재하지만, 모듈 내부에서 코드를 작성해나갈때 최대한 함수로 작성할지, 아니면 함수 없이 한곳에 작성할지 고민이 되는 경우가 있음ex) VC가 로드될때 로딩을 돌리고, 카페 이름을 가져와서 뷰에 반영한 후 로딩을 멈추는 코드1. 하나의 함수에 모든 과업 다 넣기func viewDidLoad() { super.viewDidLoad() loa..