Swift Concurrency & 격리(Isolation) 핵심 개념 정리
Swift Concurrency & 격리(Isolation) 핵심 개념 정리 Matt Massicotte의 강연을 바탕으로 정리한 Swift Concurrency 가이드. 단순한 문법 습득을 넘어, 왜 이렇게 설계되었는지를 이해하는 것을 목표로 한다. 1. 왜 Swift Concurrency인가? 관습(Convention)에서 ...
Swift Concurrency & 격리(Isolation) 핵심 개념 정리 Matt Massicotte의 강연을 바탕으로 정리한 Swift Concurrency 가이드. 단순한 문법 습득을 넘어, 왜 이렇게 설계되었는지를 이해하는 것을 목표로 한다. 1. 왜 Swift Concurrency인가? 관습(Convention)에서 ...
RunViewModel 만들기 현재까지 LocationService와 HealthKitService를 각각 구현했다. 하지만 View가 이 서비스들을 직접 들고 있으면 데이터 수집과 화면 표시가 한곳에 섞이게 된다. 또한 이후 위치 정보와 HealthKit 데이터를 조합해야 하는 시점이 오면 View에서 처리하기에는 책임이 커지게 된다. 그래서 R...
HealthKitService 만들기 이전글에서 구현한 CoreLocation만큼 중요한 기능이다. 여기도 나중에 참고하면 좋게 하기위해 나름 자세하게 써보려 한다. 1. HealthKit 추가하기 이렇게 추가를 해준다. 2. Info.plist에 추가 이젠 수동으로 info를 관리하니 예전처럼 추가만 해주면 된다. 이전글에 있...
LocationService 만들기 러닝앱에서 빠지면 안되는 가장 중요한 요소이다. 오늘은 이걸 만들고 mockui하나 만들어서 시뮬레이터와, 실기기 테스트를 할 예정 다만 Swift6로 만들기때문에 초기에 잘 해놔야할 것 같다. 이미 알고 있는 부분이 많긴하지만, 그래도 디테일하게 하나 하나 작성을 하면서 가보려 한다. 이유는 그냥 나중에 ...
시작하게 된 이유 Swift Concurrency를 공부하면서 Actor를 제대로 써보고 싶었다. 단순히 @MainActor를 클래스에 붙이는 것 말고, 별도의 격리 영역을 만들어서 데이터를 처리하는 구조를 직접 만들어보고 싶었다. 미니 프로젝트 목표 Timer로 임의의 데이터를 생성해서 Actor에 흘려보내고, 그 결과를 ViewModel...
개인 장기? 프로젝트를 진행해본다. 1. 프로젝트 만들기 위의 표처럼 기본적인 세팅을 하고 들어간다. 사실 개인적으로 여기서 가장 큰 핵심은 Swift6을 사용했다는 점이다. 확실히 Swift 5를 쓰다가 최근에 Swift 6을 접하니 Concurrency부분이 상당히 빡셌다. 즉 그만큼 철저한 Thread 관리가 필요하다는걸 느꼈는데, ...
우선 ReadMe에 아래와 같이 보완사항에 대해서 리스트를 적었었다. 보완해야 할 점 iOS 앱 ObservableObject + @Published → @Observable 마이그레이션 ProfileViewModel 로딩/성공/실패 상태 관리 추가 FavoriteViewModel → scan 으로 리팩토링 FavoritesView...
Widget 적용하기 이제 GitExplorer의 마지막 단계인 Widget 적용하기이다. 이전에이미 정리를 해본적이 있기에, 이걸 참고해서 빠르게 적용을 해보려 한다. 사실 이전에도 WidgetKit을 처음접할때 했던게 Github Repo였어서 결이 비슷할지도 모른다. 1. Widget Extension 만들기 Target을 추가해서 ...
WatchOS 연동하기 기존에 Udemy강의에서 WatchOS 앱만들기를 했었는데 안타깝게도 기존 iOS App과의 연동은 없었다. 그래서 Docs를 보면서 연동을 직접 부딪혀가며 해보려 한다. 1. WathOS App 추가하기 기존에는 그냥 새로운 프로젝트로 만들었다면. iOS App이 있다면 만드는 방법이 달라진다. 이렇게 2가지 방...
이번엔 2탄이다. 일단 강의에서는 SwiftUI를 활용한 watchOS 앱 구축 watchOS에서의 CoreData 연동 및 활용 CoreData에서 로컬 데이터 불러오기 (로드) CoreData 초기화를 위한 PersistentController 구현 Environment(환경 변수)를 활용한 ManagedObjectConte...