iOS (32) 썸네일형 리스트형 Tuist - 기존 프로젝트에 Tuist 도입 배경 및 효과 기존 프로젝트에 Tuist 4를 도입했던 과정을 기록합니다. Tuist3에서 Tuist4로 넘어가는 과정에 마이그레이션을 진행하느라 자료도 충분치 않았고, 여러 기본 개념들에 빈틈이 많았던 상황이라 그 과정에서 개인적으로도 여러모로 많이 학습했습니다. 현재는 Tuist로의 전환을 마치고 µFEATURES 도입을 위해 (또는 현재 프로젝트에 fit한 구조를 찾는 과정) 공통 모듈들을 분리하는 작업을 진행 중에 있는데요. Tuist를 도입한 배경, 마이그레이션 과정, 모듈들을 분리하면서 만났던 이슈들 그리고 모듈화 진행 과정까지 하나씩 정리해보려 합니다. 이번 글에서는 Tuist를 도입한 배경과 도입 후 느낀 장점들에 대해 소개합니다. 상황Tuist의 도입을 처음 고려하게 된 이유는 프로젝트 모듈화에 대한 .. Concurrency (3) AsyncSequence & Intermediate Task 이전글 - Concurrency(2) Getting started with async/await Modern Concurrency in Swift 를 읽고 간단 정리Getting to Know AsyncSequence AsyncSequence는 비동기적으로 Element를 생성할 수 있는 시퀀스를 나타내는 프로토콜- Swift Sequence와 동일- 일반적인 Sequence에서는 다음 Element를 즉시 사용 가능- AsyncSequence에서는 await 키워드를 사용하여 다음 요소가 준비될 때 까지 기다려야 한다. for문for try await item in asyncSequence { // Next item for asyncSequence} while문var iterator = async.. Concurrency (2) Getting started With async/await 이전글 - Concurrency(1) Why Modern Concurrency? Modern Concurrency in Swift 를 읽고 간단 정리 Pre-async/await Asynchronyfunc fetchStatus(completion: @escaping (ServerStatus) -> Void) { URLSession.shared.dataTask( with: URL(string: "https://amazingserver.com/status")! ) { data, response, error in // Decoding, error handling etc completion(ServerStatus(data)) }.resume()}fetchSt.. Concurrency (1) Why Modern Swift Concurrency? Modern Concurrency in Swift 를 읽고 간단 정리 Modern Swift Concurrency의 등장 애플이 비동기 프레임워크에 대해 중요하게 발표한 마지막 시기는GCD(Grand Central Dispatch)가 나왔을 때다. 다만 이는 순수 Swift 코드가 아니라, Objective-C의 것을 빌려 쓴 것이다. Swift 5.5에서 부터 Swift 고유의 asynchronous, concurrent 코드를 작성할 수 있게 된다. Asynchronous와 Concurrent잠깐 간단하게 짚고 넘어가자면 아래와 같다. Synchronous (동기) ㄴ 작업이 순차적으로 실행 / 하나의 작업이 완료되기 전에 다른 작업을 시작하지 않음 Asynchronous(비동기)ㄴ 작업이 완료될 .. Static Linking vs Dynamic Linking 모듈화를 진행하다 보면 Static Linking을 사용할 것인가? Dynamic Linking을 사용할 것인가? 에 대한 끊임없는 고민을 하게 된다. 모든 상황에 완벽한 하나의 정답은 없고 모든 것에는 Trade-off가 존재한다. App Launching Time, Build Time, App Size 등을 고려해야 하는데 Expedia 팀에서 이를 잘 실험한 글이 있어 요약해보려 한다. 특히 여기서 실험한 방식들을 엿보면, 최근 골머리를 앓고 있는 Static Framework 복사 조건에 대해서도 어느정도 힌트를 얻을 수 있는 것 같다. https://medium.com/expedia-group-tech/the-effects-of-linking-dependencies-on-app-performan.. Static Framework의 번들/리소스 Tuist로 모듈화를 진행하면서 Framework 관련 지식들을 공부하다 보니 여러 모르는 개념들이 많이 보인다. iOS에서 Framework를 새롭게 추가할 때 가능한 옵션은 다음과 같다.Framework : mach-o type = dynamic libraryStatic Library : mach-o type = static library이는 공식적으로 애플이 "Framework는 Dynamic으로 사용하세요." 라고 말하는 것 처럼 느껴진다. 실제로 Static Framework를 사용하다 보면 리소스를 포함할 수 없어서 어쩔 수 없이 Dynamic Framework를 사용하는 경우가 있다. Dynamic Framework가 늘어나면 App Launcing Time이 길어지기에 여러가지 Trade-.. swift docs - Concurrency Concurrency - swift docs 를 읽고 정리한 글 입니다. Swift는 구조화된 방식으로 비동기 및 병렬 코드를 작성할 수 있도록 bulit-in 지원합니다. 한 번에 한 개의 프로그램만 실행 될지라도 비동기 코드는 일시 중단되었다가 나중에 재개될 수 있습니다. 프로그램에서 코드를 일시 중단했다가 재개하면 장기 실행 작업(네트워크를 통해 데이터를 가져오거나 파일을 구문 분석하는 등)을 계속하면서 단기 작업(UI 업데이트 등)에서 계속 진전을 이룰 수 있습니다. 병렬 코드는 여러 코드가 동시에 실행되는 것을 의미합니다. 예를 들어 4코어 프로세서가 있는 컴퓨터는 4개의 코드를 동시에 실행할 수 있으며 각 코어가 하나의 작업을 수행합니다. 병렬 및 비동기 코드를 사용하는 프로그램은 한 번에 여.. SwiftUI 뷰가 다시 그려지는 조건 탐구 (Redraw) SwiftUI로 프로젝트를 진행하던 도중, Redraw 조건을 명확하게 인지하지 못하고 있어 애먹은 일이 있었습니다. 그래서 뷰가 다시 그려지는 조건에 대해서 확인해보고자 합니다.PART 1. WWDC - Demystify SwiftUI WWDC - Demystify SwiftUI를 통해 몇 가지 사실을 알 수 있었습니다.1. Identity1-1. View는 Identitiy를 갖는다. SwiftUI는 이 Identity로 서로 다른 뷰들을 구분한다. 당연하게도 같은 Identity를 가지면 같은 View이다.1-2. Identity는 Structural과 Explict으로 구분된다.Explicit은 직접 명시해줄 수 있는 Identity이다. - modifier로 직접 부여하는 값 - ForEach에.. 이전 1 2 3 4 다음