오전 7시 치앙마이에 도착함 그랩타고 호텔로 오니 너무 일찍이라 체크인도 안되고 해서 근처에 님만쪽 걸어다님 오전 9시에 식당 여는데가 딱 하나 있어서 가서 무삥 하나 먹어봄 맛있었음 근처에 헬스장 하나 있길래 다녀오고 호텔 돌아가니 아직도 체크인 못한다 해서 점심 먹으로 카오쏘이 님만을감 맛있음 그런데 다른곳에 비해 조금 비싸고 앞옆뒤 테이블 한국인들이 많았음 호텔은 오키드 호텔이었는데 1박에 4만원이었나? 가성비 좋았음 침실이 엄청 컸음 나중에 방콕가서 작은 방쓰려니 적응 안됐었음 ㅠ 다 좋은데 문제는 님만을 걸어서 10분정도 가야해서 주변에 먹을게 많이 없었음 저녁에 오픈채팅 방 통해서 도이수텝 가는 동행 구해서 같이 치앙마이 대학교 근처에서 썽태우 타서 도이수텝 같이감 같이 탄 아줌마들 있었는데 ..
-
SwiftUI ViewModifier와 State 상태 관리 오류
SwiftUI ViewModifier와 StateObject 상태 관리1. 개요SwiftUI에서 탭바 위 등 앱의 최상단(Top VC)에 UIViewController를 띄우기 위해 커스텀 ViewModifier를 사용하는 것은 훌륭한 하이브리드 패턴이다. 하지만 이 때 상태(Reference Type)를 담는 그릇을 잘못 선택하면 좀비 컨트롤러(메모리 누수 및 제어 불가) 버그가 발생한다.2. 문제 원인: @State와 View Identity의 취약성ViewModifier는 일반 뷰(Struct)와 달라서 부모 뷰 계층(View Tree)에서 조건부(if, switch) 변화가 생기면 식별자(Identity)가 상실되고 완전히 파괴되었다가 새로 생성되는 일이 잦다.이때 모디파이어 내부에 @State ..
-
[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)을 반복해서 ..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
SwiftUI ViewModifier와 State 상태 관리 오류Swift 2026.02.25 11:27
SwiftUI ViewModifier와 StateObject 상태 관리1. 개요SwiftUI에서 탭바 위 등 앱의 최상단(Top VC)에 UIViewController를 띄우기 위해 커스텀 ViewModifier를 사용하는 것은 훌륭한 하이브리드 패턴이다. 하지만 이 때 상태(Reference Type)를 담는 그릇을 잘못 선택하면 좀비 컨트롤러(메모리 누수 및 제어 불가) 버그가 발생한다.2. 문제 원인: @State와 View Identity의 취약성ViewModifier는 일반 뷰(Struct)와 달라서 부모 뷰 계층(View Tree)에서 조건부(if, switch) 변화가 생기면 식별자(Identity)가 상실되고 완전히 파괴되었다가 새로 생성되는 일이 잦다.이때 모디파이어 내부에 @State ..
-
[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)을 반복해서 ..