일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ios프로그래밍
- MVVM
- 머신러닝
- swiftdata
- RxSwift
- ios
- Viper
- Combine
- 개발자블로그
- Swift
- coredata
- 비동기처리
- go언어
- 웹개발
- MVC
- IT트렌드
- SwiftUI
- swiftmacros
- 프로그래밍
- 비동기프로그래밍
- CleanArchitecture
- swiftconcurrency
- 아키텍처패턴
- Redux
- 서버개발
- iOS개발
- 데이터분석
- swift공부
- swiftcombine
- asyncawait
- Today
- Total
목록분류 전체보기 (33)
탐험하는 바이트스토리
미션임파서블 파이널 레코닝와 북미에서 같은 날 개봉했는데,톰형을 제껴버리고 북미 박스오피스 1위를 며칠째 지키고 있는 "릴로& 스티치"실제로 보고온 후기를 간단히 얘기해보죠! 🎬 줄거리 간단하게 (스포 거의 없음!)이야기는 우주에서 시작하는데, 외계 생명체 과학자가 만든 ‘실험체 626’,즉 우리가 아는 스티치는 세상에서 가장 파괴적인 존재로 태어나요.그런데 우주 감옥에서 탈출해서... 하와이 지구에 불시착!그리고 그곳에서 릴로, 작은 소녀를 만나면서 이야기가 본격적으로 시작하죠.이번 영화는 2002년에 나온 원작 애니메이션의 이야기를 그대로 따라가네요. 영화의 진짜 매력 포인트1. 스티치가 너무 귀엽고 웃겨요! 처음엔 약간 괴물처럼 생긴 외계인인데, 보면 볼수록 정들어요ㅋㅋ 엉뚱한 행동과 고장난..
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 처리상황검색창에 사용자가 글자를 입력할 때마다 서버에 쿼리 요청을 보내면너무 많은 네..
🔍 3편. SwiftData, 완벽하진 않지만 기대되는 이유SwiftData는 분명히 많은 걸 단순하게 만들어줬다.하지만 모든 것이 장밋빛은 아니다.이번 편에서는 SwiftData의 한계와 미완성된 부분,그리고 Core Data와의 공존 문제에 대해 솔직하게 이야기해보자.⚠️ SwiftData의 주요 한계들1. 🧱 iOS 17 이상에서만 동작이건 SwiftData를 실제 앱에 적용할 때 가장 큰 장벽이다.팀 프로젝트에서 모든 타겟이 iOS 17 이상이면 상관없지만현실적으로는 아직 iOS 16 이하를 지원해야 하는 경우가 많다. 대부분 실무에서 현 최신 버전에서 3~5년전 버전까지 고려하는 경우가 많다.❗ SwiftData는 @Model도, @Query도, @Environment(\.modelConte..
실무 예제로 배우는 Structured Concurrency지난 FAQ 편에서 머릿속 개념들을 정리했다면, 이제는 실전입니다 💪이번엔 Swift Concurrency를 실제 앱 개발에 어떻게 활용할 수 있는지, 다양한 실무 예제와 함께 살펴볼 거예요.이 포스트에서는 다음과 같은 시나리오들을 다룰 예정입니다:✅ 앱 시작 시 초기 데이터 로딩 (Structured Concurrency 활용)📱 이미지 병렬 다운로드 (TaskGroup, async let 비교)🧠 작업 취소 처리 (Task.cancel, 생명주기 대응)💬 UI 업데이트와 MainActor🔐 공유 상태 관리와 Actor각 예제에는 핵심 포인트와 함께 왜 그렇게 설계했는지도 설명드릴게요. Let's go!1. 앱 시작 시 초기 데이터 로..