SwiftUI + TCA 강의 보러가기 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처| 덤벨로퍼 - 인프런 강의복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. TCA의 핵심 요소(State, Action, Reducer, Store)를 이해하고, Swww.inflearn.com SwiftUI TCA로 기능을 구현중입니다. 아직 초보자 수준이라 매시간이 도전이고 고비입니다. 그러던 중 다음과 같은 에러가 나타났습니다. 런타임에 발생하며 크래시는 안 나지만 UI가 심하게 버벅이면서 에러가 자꾸 났습니다.Perceptible state was access..
-
[Swift 6] 싱글톤, Task.detached, 그리고 의존성 주입(DI)에서 만나는 동시성 문제
[Swift 6] capture of self with non sendable type 동시성 문제 Swift 6의 Strict Concurrency 모드가 도입되면서, 기존에 관습적으로 사용하던 코드들에서 많은 컴파일 에러가 발생하고 있습니다. 이번 글에서는 실무에서 가장 빈번하게 마주치는 세 가지 핵심 패턴과 그 해결책을 정리해 봅니다.1. 싱글톤과 가변 상태 (Mutable Global State)가장 흔한 패턴이자, Swift 6에서 가장 먼저 경고를 보내는 것이 바로 **"가변 프로퍼티를 가진 싱글톤"**입니다.🚨 문제 상황final class CustomAlertPopupWindow { static let shared = CustomAlertPopupWindow() // ⚠️ 전역 접..
-
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)개발 환경에서 여러 빌드 설정(Dev, QA, Release)을 사용할 때, 각 환경을 시각적으로 구분하기 위해 다른 앱 아이콘을 설정하는 것은 매우 유용합니다. 이 글에서는 Tuist 프로젝트에서 스킴별로 다른 앱 아이콘을 설정하는 방법을 단계별로 알아보겠습니다.1. App Icon Set 준비하기일반 이미지를 앱 아이콘으로 바로 사용할 수는 없고, Icon Set 형태로 준비해야 합니다.Icon Set 생성 방법Xcode에서 프로젝트의 Assets.xcassets 폴더로 이동좌측 하단 + 버튼 클릭iOS > App Icon 선택생성된 Icon Set에는 다양한 사이즈의 아이콘을 넣을 수 있는 슬롯이 준비되어 있습니다.다..
-
SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이)
🚀 SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이) 이 문서는 SwiftUI 환경에서 NavigationStack 사용이 어려운 iOS 버전(16 미만) 또는 특정 UIKit 구조(탭 바) 위로 페이지를 Push 하여 탭 바를 덮도록 구현하는 방법을 설명합니다. 1. SwiftUI 기본 네비게이션의 한계 1.1. iOS 16+의 표준 방식 iOS 16 이상을 타겟팅할 경우, SwiftUI의 네비게이션은 NavigationStack 및 navigationDestination(item:destination:)을 사용하여 UIKit의 Push와 유사하게 페이지를 쌓을 수 있습니다. 🚨 제한: 'navigationDestination(item:desti..
-
[SwiftUI] 커스텀 ProgressView 만들기 (feat. 특이한 모양 Progress 애니메이션)
SwiftUI에서 제공하는 기본 ProgressView는 간단한 진행 상태를 보여주기엔 편리하지만, 디자인이 조금만 특별해져도 한계에 부딪힙니다. 예를 들어 ㅇ-ㅇ-ㅇ-ㅇ처럼 단계별로 끊어지는 형태의 프로그레스 바를 구현해야 한다면 어떻게 해야 할까요?이럴 땐 직접 그리는 것이 오히려 더 직관적이고 편한 방법이 될 수 있습니다. 이번 글에서는 ZStack과 mask를 활용해 독특한 모양의 프로그레스 뷰를 만들고, 자연스러운 애니메이션까지 구현하는 과정을 단계별로 알아보겠습니다.1단계: 프로그레스 '모양' 그리기가장 먼저 할 일은 프로그레스 바의 전체적인 모양, 즉 '트랙(Track)'을 만드는 것입니다. HStack 안에서 ForEach를 사용해 원(Circle)과 사각형(Rectangle)을 반복해서 ..
-
SwiftUI Text에 gradient 를 적용하는 방법 .mask() (그라데이션 텍스트)
HStack { Text(title) .font(.system(size: 14, weight: .bold)) .foregroundStyle(Color.white) .padding(.leading, 20) .padding(.top, 12) .padding(.bottom, 8) Spacer() } .background( LinearGradient( gradient: Gradient(colors: [Color(UIColor(hex: "3D77FF")), Color(UIColor(hex: "9B3DFF"))]), startPoint: .leading, e..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
[Swift 6] 싱글톤, Task.detached, 그리고 의존성 주입(DI)에서 만나는 동시성 문제Swift 2025.11.26 14:29
[Swift 6] capture of self with non sendable type 동시성 문제 Swift 6의 Strict Concurrency 모드가 도입되면서, 기존에 관습적으로 사용하던 코드들에서 많은 컴파일 에러가 발생하고 있습니다. 이번 글에서는 실무에서 가장 빈번하게 마주치는 세 가지 핵심 패턴과 그 해결책을 정리해 봅니다.1. 싱글톤과 가변 상태 (Mutable Global State)가장 흔한 패턴이자, Swift 6에서 가장 먼저 경고를 보내는 것이 바로 **"가변 프로퍼티를 가진 싱글톤"**입니다.🚨 문제 상황final class CustomAlertPopupWindow { static let shared = CustomAlertPopupWindow() // ⚠️ 전역 접..
-
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)Swift 2025.11.24 11:05
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)개발 환경에서 여러 빌드 설정(Dev, QA, Release)을 사용할 때, 각 환경을 시각적으로 구분하기 위해 다른 앱 아이콘을 설정하는 것은 매우 유용합니다. 이 글에서는 Tuist 프로젝트에서 스킴별로 다른 앱 아이콘을 설정하는 방법을 단계별로 알아보겠습니다.1. App Icon Set 준비하기일반 이미지를 앱 아이콘으로 바로 사용할 수는 없고, Icon Set 형태로 준비해야 합니다.Icon Set 생성 방법Xcode에서 프로젝트의 Assets.xcassets 폴더로 이동좌측 하단 + 버튼 클릭iOS > App Icon 선택생성된 Icon Set에는 다양한 사이즈의 아이콘을 넣을 수 있는 슬롯이 준비되어 있습니다.다..
-
SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이)Swift 2025.11.06 09:47
🚀 SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이) 이 문서는 SwiftUI 환경에서 NavigationStack 사용이 어려운 iOS 버전(16 미만) 또는 특정 UIKit 구조(탭 바) 위로 페이지를 Push 하여 탭 바를 덮도록 구현하는 방법을 설명합니다. 1. SwiftUI 기본 네비게이션의 한계 1.1. iOS 16+의 표준 방식 iOS 16 이상을 타겟팅할 경우, SwiftUI의 네비게이션은 NavigationStack 및 navigationDestination(item:destination:)을 사용하여 UIKit의 Push와 유사하게 페이지를 쌓을 수 있습니다. 🚨 제한: 'navigationDestination(item:desti..
-
[SwiftUI] 커스텀 ProgressView 만들기 (feat. 특이한 모양 Progress 애니메이션)Swift 2025.08.19 09:41
SwiftUI에서 제공하는 기본 ProgressView는 간단한 진행 상태를 보여주기엔 편리하지만, 디자인이 조금만 특별해져도 한계에 부딪힙니다. 예를 들어 ㅇ-ㅇ-ㅇ-ㅇ처럼 단계별로 끊어지는 형태의 프로그레스 바를 구현해야 한다면 어떻게 해야 할까요?이럴 땐 직접 그리는 것이 오히려 더 직관적이고 편한 방법이 될 수 있습니다. 이번 글에서는 ZStack과 mask를 활용해 독특한 모양의 프로그레스 뷰를 만들고, 자연스러운 애니메이션까지 구현하는 과정을 단계별로 알아보겠습니다.1단계: 프로그레스 '모양' 그리기가장 먼저 할 일은 프로그레스 바의 전체적인 모양, 즉 '트랙(Track)'을 만드는 것입니다. HStack 안에서 ForEach를 사용해 원(Circle)과 사각형(Rectangle)을 반복해서 ..
-
SwiftUI Text에 gradient 를 적용하는 방법 .mask() (그라데이션 텍스트)Swift 2025.08.14 09:32
HStack { Text(title) .font(.system(size: 14, weight: .bold)) .foregroundStyle(Color.white) .padding(.leading, 20) .padding(.top, 12) .padding(.bottom, 8) Spacer() } .background( LinearGradient( gradient: Gradient(colors: [Color(UIColor(hex: "3D77FF")), Color(UIColor(hex: "9B3DFF"))]), startPoint: .leading, e..