SWIFT

51
P_001 · SWIFT

URLSession 취소를 실패 알림으로 보여주지 않기

Swift concurrency에서 URLSession 요청을 취소했는데 에러 토스트가 뜨는 문제를 CancellationError와 URLError.cancelled 기준으로 정리한다.

JUN 02, 2026 · 6 MIN
#swift#urlsession#concurrency
P_002 · SWIFT

UICollectionViewCompositionalLayout 가로 스크롤 섹션에서 삐끗한 것들

UICollectionViewCompositionalLayout에서 orthogonalScrollingBehavior로 가로 스크롤 섹션을 만들 때 paging, group width, estimated size, section inset에서 자주 헷갈린 지점을 정리한다.

JUN 01, 2026 · 7 MIN
#uikit#uicollectionview#compositionallayout
P_003 · SWIFT

iOS 17에서만 죽는 SwiftData 크래시 — unmanaged @Model의 함정

ModelContext 밖에서 init한 @Model의 합성 getter가 iOS 17 런타임에서 SIGABRT — 운반은 순수 struct로 바꿨다.

MAY 29, 2026 · 4 MIN
#swiftdata#swift#ios17
P_004 · SWIFT

Swift ClosedRange<Date> 한 줄 때문에 한 달간 헤맨 이야기

Swift ClosedRange<Date>의 precondition trap을 따라가다 보니, 진짜 범인은 캘린더 데이터 매핑에서 가드 변수를 안 쓴 한 줄이었다. 데이터·표현 두 레이어로 막은 회고.

MAY 26, 2026 · 3 MIN
#swift#closedrange#date
P_005 · SWIFT

Coordinator 패턴에서 부모 없는 외부 진입이 만드는 delegate nil 함정

푸시나 딥링크로 상세 화면을 직접 열 때 부모 Coordinator가 없어 delegate nil로 종료 흐름이 멈춘 문제와 fallback 처리 기록.

MAY 22, 2026 · 5 MIN
#ios#swift#coordinator
P_006 · SWIFT

실기기에서만 깨진 콜드스타트 푸시 race condition 디버깅 기록

시뮬레이터에서는 멀쩡했지만 실기기 콜드스타트 푸시에서만 상세 화면이 열리지 않던 문제를 네 단계로 추적한 기록.

MAY 22, 2026 · 7 MIN
#ios#swift#pushnotification
P_007 · SWIFT

UIKit 모달 여러 개가 동시에 present 될 때 큐로 줄 세운 기록

UIKit에서 여러 publisher가 동시에 modal present를 트리거할 때 생기는 충돌을 priority queue, RunLoop 디바운스, dismiss completion으로 직렬화한 사례.

MAY 21, 2026 · 8 MIN
#uikit#coordinator#modal
P_008 · SWIFT

Coordinator re-attach 때 생기는 deinit race window 막기

UIKit Coordinator를 재부착하는 순간 old coordinator deinit과 외부 push/deeplink 이벤트가 겹치며 생기는 race window를 막는 방법.

MAY 21, 2026 · 7 MIN
#ios#coordinator#uikit