일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- 리펙터링
- Human interface guide
- UICollectionView
- RxCocoa
- rxswift
- 리팩토링
- ribs
- swiftUI
- HIG
- map
- collectionview
- 스위프트
- Refactoring
- combine
- Xcode
- UITextView
- uiscrollview
- MVVM
- Protocol
- clean architecture
- swift documentation
- SWIFT
- ios
- 리펙토링
- Observable
- uitableview
- 애니메이션
- 클린 코드
- Clean Code
- Today
- Total
목록2022/06 (30)
김종권의 iOS 앱 개발 알아가기
패턴 매칭) 많이 사용하는 익숙한 패턴 1) 바인딩 let age = (20, 34) switch age { case let (a1, a2): print("\(a1), \(a2)") default: break } 2) 와일드 카드 switch age { case let (a1, _): // '_' 와일드 카드 패턴 print("\(a1), \(a2)") default: break } 3) 튜플 let (v1, v2) = (1, 2) print(v1) print(v2) 4) enum enum MyEnum { case a(Int) case b } let myEnum = MyEnum.a(10) if case let a(int) = myEnum { print(int) } 패턴 매칭) 익숙하지 않은 패턴 1) 옵..
URL과 URI 구분 URI(Uniform Resource Identifier): 특정 리소스 식별자 URL(Uniform Resource Location): 특정 리소스 위치 URI의 방법중 하나가 URL URL의 구조 scheme: 사용할 프로토콜 host: 접근할 서버의 호스트 이름 path: 접근할 서버의 경로에 대한 정보 query: 접근할 대상에 전달하는 추가적인 정보 (= 파라미터) Swift에서 URL 접근 let urlString = "https://ios-development.tistory.com/ios?page=1&item=2" guard let url = URL(string: urlString) else { return } // url의 기본 요소 접근 url.absoluteStri..
ApplicationState ApplicationState는 크게 Not Running, Inactive, Active, Background, Suspended 상태가 존재 앱에서 상태를 체크하여 처리하는 대표적인 케이스 - Active (foreground) 상태와 Background 상태를 구분하여 Active상태에서는 푸시메시지가 전송 안되게끔 막는 방법 RxSwift로 ApplicationState 처리 방법 ApplicationState는 아래처럼 코드로 접근이 가능 UIApplication.shared.applicationState 코드로 확인할 수 있는 상태는 3가지만 존재 // UIApplication.swift @available(iOS 4.0, *) public enum State :..
UIWindow 개념 UIView의 서브클래싱이고, 앱의 뷰들을 표출할 컨테이너 역할과 이벤트를 수신하는 역할을 담당 키보드 이벤트의 대상으로 지정하는데 UIWindow를 통해 이벤트를 받고 처리 UIWindow 하위에 속한 뷰들의 화면 변경 UIWindow는 고유한 시각적 모양은 없지만, UIWindow의 RootViewController에서 하나 이상의 view를 가지고 있는 형태 UIWindow가 여러개 존재할때는, keyWindow만이 터치 이벤트를 수신할 수 있음 // UIWindow는 UIView의 서브클래싱 @MainActor class UIWindow : UIView keyWindow keyWindow란 UIWindow들 중에서 가장 먼저 터치 이벤트와 같은 메시지를 처리할 window를 ..
retry를 쓰는 케이스 특정 네트워크에서 request 후에 response로 error를 받은 경우, 횟수나 exponential같은 시간 정책을 정해서 retry하는 경우에 사용 특정 처리에서 error를 받은 경우, 몇초 있다가 몇번은 retry하는 경우 사용 RxSwift를 사용한다고 할때, Observable 스트림에서 retry 연산자를 통해 쉽게 처리가 가능 예제에 사용할 프레임워크 RxSwift 데이터 준비 3개의 데이터를 방출한 후 error를 방출하는 Observable 생성 let someObservable = Observable.create { observer in observer.onNext("1") observer.onNext("2") observer.onNext("3") le..
프레임워크 관련 중요 옵션 1) Mach-O Type 프레임워크를 제공하는 쪽에서 선택해줘야하는 옵션 2) Linking Mach-O Type / Frameworks, Libraries, and Embedded Content 프레임워크를 사용하는쪽에서 선택해줘야하는 옵션 1) Mach-O Type 옵션 프레임워크를 제공하는 쪽에서 선택해줘야하는 옵션 Target > Build Settings > Linking > Mach-O Type Xcode에서 Framework를 생성하면 자동으로 Executable로 지정 옵션 5가지 Executable - 메인 프로젝트인지 (프레임워크가 아닌 메인 실행 프로젝트) Dynamic Library - 동적 라이브러리 (런타임 중에 링크) Bundle - 단순 이미지와 ..
Xcode에서의 Target Project나 Workspace의 파일들을 Build하여 생성되는 End Product를 의미 Xcode에서의 Project 모든 파일, 리소스를 빌드하는데 필요한 정보의 저장소 (repository) 프로젝트는 빌드하는 방법을 명시하는 end product인 target을 하나 이상 포함 Project가 가지고 있는 정보 소스파일에 대한 참조 structure navigator에서 소스파일을 그룹화 Debug, Release와 같은 build configuration을 설정 가능 .xcodeproj라는 디렉토리에 터미널을 통해서 들어가면 아래와 같은 정보가 존재 project.pbxproj - 각 파일들의 참조값들을 UUID들로 정의되어 있는 파일 cd {projectNa..
Tuist로 모듈화 최신 포스팅 글 목록 > https://ios-development.tistory.com/1303 1. 모듈화 개념 - Library vs Framework (static library, dynamic library, static framework, dynamic framework) 2. 모듈화 개념 - Binary File 개념 (Mach-O, CPU Architectures, Universal binary, lipo command) 3. 모듈화 개념 - XCFramework 생성, 사용 방법 4. 모듈화 개념 - Tuist로 프로젝트 관리 방법 cf) tuist로 모듈화하는 더 구체적인 방법은 tuist로 모듈화 하기 포스팅 글 참고 * tuist를 사용하기전에 알아야하는 Xco..