
TCA에서 여러 종류의 화면을 하나의 내비게이션 스택으로 관리할 때는 Path라는 enum에 화면별 리듀서를 선언합니다. 새로운 화면을 추가하려면 이 enum에 case를 추가하죠.저희도 이렇게 Path에 화면을 추가하다 크래시를 겪은 적이 있습니다. 시뮬레이터에서는

앞 글에서는 코드를 바꾸지 않았는데도 Xcode 26.3이 빌드 계획을 매번 새로 만드는 문제를 살펴봤습니다. 작은 재현 프로젝트에서는 파일 복사 등 일부 작업만 반복됐고 Swift 파일은 다시 컴파일하지 않았습니다. 그런데 같은 Xcode 버전으로 빌드한 실제 앱의

Xcode 26.3으로 사내 iOS 앱을 개발하던 중, 코드를 바꾸지 않았는데도 다시 빌드하는 데 수십 초가 걸렸습니다. 빌드 설정을 바꾸거나 DerivedData를 지운 것도 아니었습니다. 방금 빌드한 결과가 남아 있는데 왜 다시 이렇게 오래 걸리는지 의문이 들었습니

개발하던 iOS 앱에서 여러 API의 응답을 모아 보여주는 탭에 처음 들어가면 앱이 비정상 종료되는 문제가 발생했습니다. 당시 장애 기록에서는 iOS 16·17에서 발생했고 iOS 18 이상에서는 같은 증상이 나타나지 않았습니다. 문제가 된 코드는 withTaskGro
공동현관 출입 서비스를 개발하면서 사용자가 앱을 열지 않아도 문 앞에서 출입할 수 있도록 하는 것이 목표였습니다. 제조사 SDK를 연동하던 중 iPhone 11 Pro의 iOS 16.5에서 문제가 나타났습니다. 앱을 켜면 발견되던 기기를 백그라운드에서는 찾지 못해, 출

Behind the Scenes of the Xcode Build Process 발표를 통해 빌드 프로세스 구조, 컴파일러 영역, 링커에 대해 알아봅니다.

multipart/form-data는 왜 사용할까요? application/json으로 하면 안되나요? 이 질문에 대해 깊게 알아봅시다.

인스턴스 생성을 팩토리 타입의 메서드에 위임하는 방식으로 개발자들에게 이용하는 타입에 대한 정보를 숨기고 인스턴스 생성을 용이하게 하는 팩토리 패턴을 Swift 예시를 통해 알아봅니다.

실행 과정 전반이 동일한 타입의 세부 메서드들을 각 타입에서 구현하여 필요에 따라 유사하지만 다른 수행 로직을 가진 타입을 만들 수 있는 템플릿 메서드 패턴을 Swift로 작성한 예시를 통해 알아봅니다.

인터페이스가 서로 다른 타입이 같은 형식으로 사용할 수 있도록 만들어주는 어댑터 패턴을 Swift로 작성한 예시를 통해 알아봅니다.

모드가 바뀔 때마다 전략을 교체할 수 있도록 타입을 제공하는 전략 패턴을 Swift로 작성한 예시를 통해 알아봅니다.

이 시리즈는 Swift로 작성된 Server-side Web Framework인 Vapor를 이용하여 REST API를 구성하고 Heroku 서비스를 통해 배포하는 과정을 다룹니다.

클라이언트 요청에 따라 서버에서 작업을 수행하다 에러가 일어나는 경우가 있습니다. 이런 경우에 클라이언트에서 이해하기 용이한 에러 메시지를 반환해주는 방법이 있을까요? AbortError를 이용하여 에러를 커스터마이징하는 방법에 대해 알아봅시다!

이제 실제로 만들고(Create), 읽고(Read), 업데이트하고(Update), 삭제할(Delete) 수 있는 API를 로컬 서버에서 구현해봅시다.

Request, Response에 필요한 필드들만 포함시켜 주고 받을 수는 없을까요? Data Transfer Object (DTO)에 대해 알아봅시다!