SWIFT(107)
-
[iOS] 중재자 패턴 (Mediator Pattern)을 활용한 우리 팀만의 아키텍처가 만들어진 과정 (feat. View-Model-Service)
0. 들어가기에 앞서MV, MVC, MVVM, TCA, VIPER, Clean Architecture 등등 iOS 개발에 사용될 수 있는 아키텍처 패턴은 정말 많습니다.하지만 중요한 것은 "어떤 아키텍처를 사용해봤냐?"가 아니라 "왜 그 아키텍처를 선택했냐?"에 대한 대답입니다.소프트웨어에서 사용하는 패턴 (디자인 패턴, 아키텍처 패턴 포함)은 모두 특정한 문제를 해결해주기 위한 방법임에는 틀림없지만, 현 프로젝트의 볼륨이나 방향에 따라 때로는 오히려 코드를 복잡하고 / 진입 장벽을 높게만 만들 수 있기 때문입니다.즉, 아키텍처 사용에는 이유가 필요하다는 것입니다.그 이유에는 현재 프로젝트의 규모, 동료 개발자들의 역량, 개발기간과 이후 유지보수 가능성 등이 종합적으로 고려되어야 하죠.예를 들어, 작은 ..
2025.08.25 -
[Xcode] iOS 앱의 String을 쉽게 관리하고 현지화도 시켜보자! (feat. String Catalog)
Localizing and varying text with a string catalog | Apple Developer DocumentationUse a string catalog to translate text, handle plurals, and vary the text your app displays on specific devices.developer.apple.com Code-along: Explore localization with Xcode - WWDC25 - Videos - Apple DeveloperLearn how to localize your app into additional languages using Xcode. We'll walk step-by-step through the ..
2025.06.25 -
[Apple Developer Academy @ POSTECH] #5 - 사람공부
🍎 Apple Developer Academy @ POSTECH 4기 : Challenge 3 회고 (2025.05.08 - 06.13) [Apple Developer Academy @ POSTECH] #4 - 그래서 나는 무엇을 배웠지?🍎 Apple Developer Academy @ POSTECH 4기 : Challenge 2 회고 (2025.04.07 - 04.25) [Apple Developer Academy @ POSTECH] #3 - 처음 경험해본 새로운 세계, CBL (Challenge Based Learning)🍎 Apple Developer Academy @ POSTECH 4기 : Challenge 1 회mini-min-dev.tistory.com 아카데미가 시작된 지 어느덧 세 달..
2025.06.21 -
[iOS] 토스터 앱의 에러 처리 (Error Handling) 흐름을 소개합니다 (feat. Moya, Combine, networkFlatMap)
저 몰래 천천히 야금야금 진행하던 코드 리팩토링이 거의 마무리 단계에 진입했습니다!"중복 코드의 최소화" 그리고 "명확한 데이터 처리 흐름"을 목표로 코드 리팩토링을 계속 진행해왔고,블로그로도 (언제가 될지는 모르겠지만) 차근차근 한 주제씩 다뤄보겠습니다! 오늘은 이 중 에러 처리 (Error Handling)에 집중해볼거구요.Combine 적용한 선언적 데이터 스트림 흐름의 ViewModel 구조 (Input-transform-Output 흐름) 적용하기Completion 핸들러 기반 네트워크 비동기 처리 메서드 -> Combine 기반 네트워크 비동기 처리 메서드로 변경 (코드 일관성 증대)네트워크 메서드에서 발생하는 에러 처리 흐름 (Error Handling Stream) 구조화이벤트 브로드캐스..
2025.06.08 -
[GCD] 메인 스레드에서 DispatchQueue.main.sync를 사용하면 안되는 이유
☑️ 데드락 (Deadlock) 발생 상황을 이해해보자메인 스레드에서 DispatchQueue.main.sync를 호출할 때 아래와 같은 데드락 (Deadlock, 무한 대기 상태) 에러가 발생합니다.우선 데드락이 발생하는 아래 코드의 의미를 정확하게 이해해보겠습니다.별도의 설정을 하지 않으면, 기본적으로 우리의 코드는 메인 스레드 (main)에서 동작합니다. -> 해당 코드도 메인 스레드 위에서 동작 중!DispatchQueue.main : main Queue로 작업을 전달한다는 의미입니다. 메인 큐는 기본적으로 Serial Queue (직렬 큐)이기에 동일한 스레드인 자기자신, 메인 스레드 (main)로 작업 (Task)이 할당되겠군요.sync : 동기적인 작업 (= 작업을 보내고 끝날 때까지 기다림..
2025.06.06