Apple🍎/SwiftUI
-
SwiftUI 멀티 플렛폼 Navigation 아키텍쳐 설계 (Coordinator 야 저리 가라)Apple🍎/SwiftUI 2025. 4. 8. 17:23
UIKit에서 Coordinator 패턴이 등장한 배경UIKit 개발에서 Coordinator 패턴은 앱의 화면 전환 흐름을 관리하는 문제를 해결하기 위해 등장했습니다. 이 패턴이 필요했던 주요 이유들은 다음과 같습니다.1. 뷰 컨트롤러의 과도한 책임 분산UIKit의 기본 구조에서는 화면 전환 로직이 주로 뷰 컨트롤러 내부에 위치했습니다.class ProfileViewController: UIViewController { func showSettings() { let settingsVC = SettingsViewController() settingsVC.user = self.user self.navigationController?.pushViewControlle..
-
[Issue] SwiftUI: Canvas 컴포넌트가 onAppear로 인한 @State 값 변경을 업데이트 하지 않음Apple🍎/SwiftUI 2025. 3. 24. 19:34
문제 상황최근 SwiftUI로 모래 시뮬레이션 앱을 개발하던 중 이상한 문제를 발견했습니다. 간단히 말해, Canvas를 사용해 그리드와 모래를 그리고 @State 변수를 통해 모래의 위치를 관리하는 상황이었습니다. struct ContentView: View { let columns = 40 let rows = 40 let cellSize: CGFloat = 10 // Grid의 각 cell의 상태 값 : 0 = empty, 1 = sand @State private var grid = Array(repeating: Array(repeating: 0, count: 40), count: 40) var body: some View { VStack ..
-
List와 ScrollView+LazyVStack 비교하기Apple🍎/SwiftUI 2025. 3. 7. 00:04
List + TextEditor 리스트 내부 셀 안의 텍스트에디터에 내용이 많아지면 내부 스크롤이 활성화됨 ( 텍스트 에디터 크기도 살짝 늘어남 )ScrollView + LazyVStack + TextEditorLazyVstack 셀 안의 텍스트 에디터에 내용 있는 많아지면 그에 맞춰 텍스터 에디터 크기가 증가함 SwiftUI에서 List와 ScrollView+LazyVStack 조합이 TextEditor와 함께 작동할 때 다른 동작을 보이는 이유가 뭘까요?List와 ScrollView+LazyVStack의 기본적인 차이점List의 동작 방식List는 UITableView를 기반으로 한 컴포넌트로, 고정된 셀 높이나 자동 계산된 높이를 사용합니다. List는 내부적으로 콘텐츠의 크기를 미리 결정하고,..
-
SwiftUI 데이터 모델에 actor를 사용하면 안되는 이유Apple🍎/SwiftUI 2025. 2. 19. 22:44
Swift Actor 기본 개념Actor는 독립적인 실행 컨텍스트를 가지고 있으며, 이 컨텍스트 안의 데이터는 자동으로 동기화되어 안전하게 관리됩니다. 여러 작업(Task)이 동시에 Actor에 접근하려고 할때, 시스템은 이를 알아서 순차적으로 처리합니다. 마치 줄을 서서 차례를 기다리듯이, 한 번에 하나의 작업(Task)만 Actor의 데이터에 접근할 수 있게 되어 데이터 경장상태(race condition)을 효과적으로 예방할 수 있습니다. actor ChatRepository { private var messages: [Message] = [] func addMessage(_ message: Message) { messages.append(message) } ..
-
클린 아키텍처 쉽게 이해하기 with SwiftUI 🔍Apple🍎/SwiftUI 2024. 10. 29. 23:06
클린 아키텍처가 뭔가요?앱을 만들 때 코드를 역할별로 깔끔하게 나누는 방법이에요. 마치 서랍장에 물건을 종류별로 정리하는 것처럼, 코드도 하는 일에 따라 구분해서 관리하는 거죠.클린 아키텍처의 계층 구조 이해하기 📚계층이란? 🤔앱의 코드를 역할별로 나눈 각각의 층을 말해요. 각 계층은 자기만의 역할이 있고, 다른 계층과 약속된 방식으로만 소통해요. Domain Layer (핵심 계층) 💡앱의 가장 기본이 되는 부분이에요. 마치 집을 지을 때 기초 공사가 중요한 것처럼, Domain Layer는 앱의 핵심적인 데이터 모델과 이를 다루는 규칙들을 담고 있답니다.Entity: 실제 세상의 물건이나 개념을 앱 속에서 어떻게 표현할지 정하는 설계도예요.예를 들어 쇼핑앱을 만든다고 생각해볼까요?실제 상품을 앱..
-
SwiftUI가 선언형이라는게 무슨말일까?Apple🍎/SwiftUI 2024. 6. 11. 11:30
명령형 프로그래밍과 선언형 프로그래밍명령형 프로그래밍 (Imperative Programming)명령형 프로그래밍은 컴퓨터 프로그램을 상태와 상태 변화를 통해 기술하는 방식입니다. 프로그래머는 프로그램이 수행할 작업들을 순서대로 명령어로 기술하며, 각 명령어는 프로그램의 상태를 변경합니다. 대부분의 전통적인 프로그래밍 언어(C, C++, Java, Python 등)는 명령형 패러다임을 따릅니다.특징절차 지향적: 작업을 수행하는 구체적인 절차를 명시합니다.상태 관리: 프로그램의 상태를 변경하는 명령어를 통해 작업을 수행합니다.제어 구조: 반복문, 조건문, 함수 호출 등을 사용하여 프로그램의 흐름을 제어합니다.직관적 이해: 프로그램의 흐름을 직접 기술하므로 이해하기 쉽습니다.예제: Python으로 리스트의 ..