일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- framework
- composablearchitecture
- concurrency
- uikit
- ObjC
- 개발
- network
- Alamofire
- Git
- regex
- 정규표현식
- Navigation
- xcodecloud
- 앱구조
- iOS 13.0+
- Tuist
- swiftdata
- iOS 개발자
- UI
- github
- IOS
- ios18
- Firebase
- xcode
- navigationsplitview
- SWIFT
- combine
- SWIFTUI
- TCA
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- Today
- Total
목록분류 전체보기 (72)
iOS 개발 기록
📄목차CollectionView에 Combine 적용하기 DiffableDataSource를 사용한 이유 UICollectionView CollectionView 기본 레이아웃 설정 Combine PublisherModelAPI request Publisher를 구독하고 diffableDataSource에 업데이트ViewModel CollectionView에 데이터를 적용 결과Reference CollectionView에 Combine 적용하기 RxSwift + RxCocoa 조합처럼 보통 Combine + SwiftUI 조합으로 많이 쓰인다고 한다. 그런데 회사에서는 UIKit을 사용중인데 Combine + UIKit 조합은 어떻게 사용하나 공부하다가 자주 사용하는 CollectionView에 적용해 ..
📄목차Error발생 상황 원인 질문Reference Error// 로그창 Error Domain=NSURLErrorDomain Code=-999 "cancelled"발생 상황 Combine으로 네트워크 통신을 구현해보려고 시도하다가 발생한 문제. var cancellables = Set() AnyPublisher . ( 각종 메소드 ... ) .sink ( ... ) .store(in: &cancellables) 다음과 같이 코드를 작성했는데 에러가 발생했다. 원인 sink로 구독한 후에 반환되는 AnyCancellable를 메모리에 올리지 않아 바로 구독이 해지되어 생기는 문제. → 때문에 변수로 설정한 후에 메모리에 올려야 한다. var cancellable: AnyCancellable? cancel..
📄목차Collection View UICollectionViewDelegate, UICollectionViewDataSourceModern Collection View (iOS 13.0+) UICollectionViewDiffableDataSourceUICollectionViewLayout UICollectionViewFlowLayoutUICollectionViewCompositionalLayout (iOS 13.0 +)전체 코드 Reference Collection View UICollectionViewDelegate, UICollectionViewDataSource class ViewController: UIViewController { @IBOutlet weak var collectionView: ..
📄목차Compositional Layout구성Item cell 구현 SupplementaryView의 구현전체 코드ReferenceCompositional LayoutiOS 13.0에 도입된 UICollectionView의 새로운 레이아웃. 다음과 같은 특징이 있다고 한다. 기존의 UICollectionViewFlowLayout보다 더 확장된 레이아웃 제공Item 정의 -> Group 정의 -> Section 정의 순으로 순으로 진행해 간다.아래의 그림과 같이 여러 섹션으로 나누어 각 섹션끼리 관리 가능. 섹션별로 다른 레이아웃을 구성하기 쉬워진다. : 요즘 많이 보이는 다음과 같은 뷰를 View를 구현하기 편해진다. 구성Collection view의 구성 Supplementary view가 위치할 수 ..
📄목차Retain CycleCapture list weak, unowned Non-escaping closure vs Escaping closureNon-escaping closureescaping closure self? VS guard let self = self else { return } Reference Retain CycleClosure의 경우 reference type이기 때문에 순환 참조(retain cycle)를 발생시킬 수 있다. class Person { let name: String // self가 확정난 후에 name을 참조해야 하기 때문에 lazy 변수로 설정 lazy var introduction: () -> String = { return "저는 \(self.name) 입니다..
📄목차iOS의 UIStructureUIScreenUIWindowSceneUIWindowWindow와 Scene의 개념Window SceneAppDelegate와 SceneDelegate참고 iOS의 UIStructureiOS의 View 계층 UIScreen기기의 실제 물리적인 스크린. UIWindowScene 얘가 Scene을 관리하는 객체. 하나 이상의 window를 포함한다.iOS13 이상부터 생긴 SceneDelegate를 보면 UIWindowSceneDelegate 프로토콜을 채택했는데, Scene에 변화가 생길 경우 delegate를 통해 변화를 알린다. UIWindow이벤트들을 뷰로 보내주는 객체. UIV Window와 Scene의 개념Window UIView의 하위클래스. View를 담는 컨..
📄목차1. git 개념과 목적 2. git 기본 용어3. 기본적인 커맨드 4. 원격저장소 연동 5. GitFlow6. 자주 발생하는 케이스 Reference 1. git 개념과 목적 Git이란 무엇인가? 분산형 버전 관리 시스템(Version Control System) 의 한 종류. 버전관리 예시프로젝트의 수정 내용으르 복사, 백업, 저장하는 것을 빠르게 도와주는 도구가 git 장점버전 관리 각 파일을 이전 상태로 되돌릴 수 있다. 프로젝트를 통째로 이전 상태로 되돌릴 수 있다. 시간에 따른 수정 내용을 비교해 볼 수 있다. 누가 문제를 일으켰는지 추적할 수 있다. 파일을 잃어버리거나 잘못 고쳤을 때에도 쉽게 복구할 수 있다.팀 프로젝트가 아닌 개인 프로젝트에서도 버전 관리가 용이하고 프로그램이나 패치..

Fastlane 📄 목차 Fastlane 설치 // homebrew를 통해 설치 brew install fastlane // bundler(- fastlane 업데이트시 필요) 설치 gen install bundler Fastlane 설정 기본 설정 설치하고자 하는 디렉토리로 넘어가 아래 fastlane 초기화 명령어 입력. 그럼 다음과 같은 목록이 뜬다. 나중에도 추가할 수 있어서 아무거나 눌러도 된다. 나는 4번을 눌러 기본 설정을 마쳤다. fastlane init 설정을 마치면 다음과 같은 파일들이 생긴다. Gemfile Gemfile.lock fastlane/Appfile fastlane/Fastfile Gemfile과 Gemfile.lock 파일은 fastlane의 버전을 관리하는 파일이라 크게..
Coordinator Pattern Date: 2022년 12월 5일 Tags: 화면전환 📄 목차 Coordinator란? 하나 이상의 ViewController에 지시를 내리는 객체. ViewController간에 서로 이동할 때에 push, present 등 화면 전환을 Coordinator 클래스로 분리해 관리. ViewController들이 서로 분리되어 쉽게 재사용할 수 있음. 특징 Coordinator 별로 하나 이상의 ViewController을 보유한다. 각 Coordinator은 일반적으로 start라고 불리는 메서드로 ViewController을 표시한다. 각 ViewController에는 Coordinator에 대한 delegate가 있다. 각 Coordinator에는 child co..
CompletionHandler 📄 목차 completionHandler func login(loginData: Login, completionHandler: @escaping () -> Void) { guard let webview = self.webview else { return } webview.evalFlexFunc("login", sendData: loginData) { data in log.debug(" PMS LOGIN! ") completionHandler() // ❗️실수하기 쉬운 포인트 } } // 사용 login(loginData: signInInfo) { print("로그인 성공") } @escaping 을 통해 콜백 기반 comopletionHandler를 실행. 단점 : 깜빡하..