일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹개발
- MVC
- 데이터분석
- SwiftUI
- 서버개발
- swiftmacros
- go언어
- RxSwift
- 머신러닝
- 비동기프로그래밍
- iOS개발
- Swift
- 개발자블로그
- Combine
- 프로그래밍
- 아키텍처패턴
- Viper
- CleanArchitecture
- swift공부
- swiftconcurrency
- swiftcombine
- ios프로그래밍
- swiftdata
- MVVM
- Redux
- 비동기처리
- ios
- coredata
- IT트렌드
- asyncawait
- Today
- Total
목록비동기처리 (11)
탐험하는 바이트스토리
Swift Concurrency 마스터하기 - 실무 확장을 위한 구조화 전략 3가지이번 편에서는 지난편에 했던 북마크/스크랩 기능이 포함된 앱 UI를 이어가보죠.목표는 다음과 같습니다:비동기 리스트 로딩과 북마크 토글을 동시에 안정적으로 처리상태 꼬임 없이 스크롤 중 추가 로딩, 북마크 상태 반영성공/에러 상태, 이전 데이터 유지까지 고려한 설계🎯 실무 확장을 위한 구조화 전략 3가지이번 편에서는 아래 3가지를 집중적으로 소개해요:컴포넌트화: UI/로직을 재사용 가능한 단위로 분리하기상태 관리 추상화: 공통 비동기 흐름을 하나의 타입으로 묶기멀티탭 구조 대응: 북마크 상태를 여러 화면에서 일관되게 유지하기1️⃣ 컴포넌트화: 북마크 버튼을 독립적인 재사용 단위로 만들기북마크 토글 기능이 여러 리스트나 상..
Swift Concurrency 마스터하기 - 북마크/스크랩 기능이 있는 복합 UI 아키텍처 설계비동기 작업을 다루는 기본기와 고급 패턴들을 익혔다면,이제 실전에 적용해볼 차례입니다.이번 편에서는 북마크/스크랩 기능이 포함된 앱 UI를 예시로,실제 앱 구조 설계를 해볼 거예요.목표는 다음과 같습니다:비동기 리스트 로딩과 북마크 토글을 동시에 안정적으로 처리상태 꼬임 없이 스크롤 중 추가 로딩, 북마크 상태 반영성공/에러 상태, 이전 데이터 유지까지 고려한 설계🎯 UI 구성 시나리오사용자는 뉴스 목록을 스크롤하면서 기사를 볼 수 있고, 각 기사 옆에 있는 북마크 버튼을 눌러 스크랩 토글이 가능함.목록은 페이지네이션으로 불러오고, 북마크 상태는 서버와 동기화됨.스크롤 중에도 북마크 변경이 가능해야 하며,..
Swift Concurrency 마스터하기 - 비동기 상태와 에러/로딩을 통합 관리하는 고급 패턴SwiftUI + async/await를 실무에서 쓰다 보면,단순히 "로딩/성공/실패"로는 설명되지 않는 복잡한 상황들을 자주 만나게 됩니다.예를 들어 이런 경우:첫 로딩은 성공했는데, 다음 페이지 로딩 중 에러 발생전체 목록은 로딩 중인데, 부분적으로 데이터가 먼저 도착UI 상 여러 개의 비동기 작업이 동시에 진행되며, 상태가 엇갈리는 상황이럴 땐 상태 관리가 무너지기 쉬워요.그래서 오늘은 이 복잡한 비동기 흐름들을 안정적으로 통합 관리하는 고급 패턴을 정리해보려 합니다.🚦 단일 상태로는 부족하다?기존 방식에서 우리는 이렇게 관리했었죠:enum LoadableState { case idle ca..
Swift Concurrency 마스터하기 - Part 8: 중복 요청 방지와 Task 취소 처리 전략Swift Concurrency를 쓰다 보면 꼭 한 번 겪는 상황이 있습니다."스크롤 조금만 내렸는데 중복 로딩이 엄청나게 발생하네...?""탭 전환했는데 이전 Task가 계속 돌고 있어... UI가 뒤엉켰어" 이럴 때 필요한 게 바로 Task 취소 처리와 중복 요청 방지 전략이에요.이번 편에선 SwiftUI와 함께 이 문제를 깔끔하게 해결하는 방법을 다뤄볼게요.🧠 문제 정리: 왜 중복 호출이 생길까?SwiftUI에서는 다음과 같은 상황에서 Task가 여러 번 실행될 수 있어요:.task가 뷰가 재그려질 때마다 중복 호출됨.onAppear가 예상보다 자주 불림사용자 상호작용에 따라 빠르게 여러 Task..
Swift Concurrency 마스터하기 - 상태 기반 비동기 UI 설계 패턴 (Loading / Success / Error)SwiftUI에서 비동기 데이터를 다루다 보면, 거의 필연적으로 마주치는 문제 하나. 바로"로딩 중이면 로딩 스피너 띄우고, 에러 나면 메시지 보여주고, 성공하면 콘텐츠 보여줘야지... 근데 상태 관리를 어떻게 깔끔하게 하지?" 입니다. 상태가 꼬이면 UI도 꼬이고, 디버깅도 힘들고, 코드도 지저분해지죠.그래서 이번 편에서는 SwiftUI + Swift Concurrency 환경에서 깔끔하고 구조적인 상태 기반 UI 설계 방법을 정리해봅니다.💡 핵심 개념: 상태를 하나의 enum으로 통합하자우리는 종종 아래처럼 여러 개의 플래그로 상태를 관리하곤 합니다:@Published v..
Swift Concurrency 마스터하기 - SwiftUI와 함께 쓰는 비동기 패턴이번 편에선 SwiftUI와 Swift Concurrency를 어떻게 똑똑하게 같이 쓰는지,특히 ViewModel과 상태 관리 측면에서 어떤 전략이 유효한지 다뤄봅니다.특히 Pull to Refresh와 무한 스크롤(pagination) 같은 현실적인 UI 상황을 함께 살펴볼 거예요.SwiftUI는 선언형이라 비동기 흐름을 잘못 다루면 쉽게 꼬입니다.그래서 구조적으로 잘 짜는 게 핵심이죠 💡🧱 기본 구조 잡기 - ViewModel에서 비동기 처리하기SwiftUI에서 async 작업은 대체로 ObservableObject 뷰모델 안에서 처리합니다.중요한 포인트는 아래 3가지:@Published는 항상 메인 스레드에서만..
Swift Concurrency 마스터하기 - 실전에 바로 쓰는 패턴 모음.zipSwift Concurrency에 대한 개념도 잡았고, 실무 예제도 하나씩 익혀봤죠.이제는 우리가 자주 마주치는 비동기 상황들을 어떻게 잘 다루는지,그리고 현업에서 쓰는 패턴들을 어떻게 적용하는지 정리해볼 차례입니다.이번 편에서는 다음과 같은 패턴들을 다룰 거예요:⏳ Debounce & Throttle 처리📥 비동기 작업 큐 만들기🔁 재시도 로직🔄 Combine과 async 연동하기🛑 타임아웃 처리각 패턴마다 언제 쓰면 좋은지, 어떤 문제가 해결되는지, 그리고 실제 코드까지 다 챙겨드립니다 💼1. Debounce & Throttle 처리상황검색창에 사용자가 글자를 입력할 때마다 서버에 쿼리 요청을 보내면너무 많은 네..
실무 예제로 배우는 Structured Concurrency지난 FAQ 편에서 머릿속 개념들을 정리했다면, 이제는 실전입니다 💪이번엔 Swift Concurrency를 실제 앱 개발에 어떻게 활용할 수 있는지, 다양한 실무 예제와 함께 살펴볼 거예요.이 포스트에서는 다음과 같은 시나리오들을 다룰 예정입니다:✅ 앱 시작 시 초기 데이터 로딩 (Structured Concurrency 활용)📱 이미지 병렬 다운로드 (TaskGroup, async let 비교)🧠 작업 취소 처리 (Task.cancel, 생명주기 대응)💬 UI 업데이트와 MainActor🔐 공유 상태 관리와 Actor각 예제에는 핵심 포인트와 함께 왜 그렇게 설계했는지도 설명드릴게요. Let's go!1. 앱 시작 시 초기 데이터 로..
공부하다보니 생각난 질문들(FAQ)로 정리해보자!Swift Concurrency를 공부하다 보면 머릿속이 복잡해질 때가 있어요.Task, Actor, await, MainActor... 처음엔 마치 외계어 같기도 하죠 😵💫그래서 이번엔! 복잡한 개념들을 쏙쏙 정리해줄 수 있는 FAQ 스타일로 내용을 정리해봤어요.이 시리즈를 따라오신 분들이라면, 여기서 한 번 머릿속 정리를 제대로 할 수 있을 겁니다 🙌Q1. async/await은 기존 completion handler 방식보다 뭐가 좋은가요?클로저 중첩에서 해방됩니다. (콜백 지옥 안녕!)코드 흐름이 마치 동기처럼 읽혀서 훨씬 직관적이에요.try/await 조합으로 에러 처리가 깔끔하게 가능!테스트 코드 짜기도 쉬워지고, 유지보수도 훨씬 좋아요...
Task, TaskGroup, 그리고 Actor까지지난 시간에는 async/await 덕분에 비동기 코드가 얼마나 깔끔해졌는지 얘기해봤죠.오늘은 거기서 한 발 더 나아가서 Swift Concurrency의 또 다른 핵심 친구들인Task, TaskGroup, 그리고 Actor에 대해 이야기해보려고 해요.사실 이 친구들 이름만 들어도 벌써 살짝 어깨에 힘이 들어가죠.하지만 걱정 마세요! 복잡하게만 느껴졌던 개념들, 오늘은 여러분이 편하게 이해할 수 있도록 하나씩 풀어볼게요 😄Task: 비동기 작업을 시작하는 방법Task는 쉽게 말하면 "비동기적으로 어떤 일을 시작해줘!" 라고 말할 수 있는 객체예요.예전엔 DispatchQueue.global().async { ... } 이렇게 GCD로 비동기 작업을 던졌..