profile
문제의 원인을 깊이 파고드는 일을 좋아합니다.
태그 목록
전체보기 (136)swift(68)TIL(35)programming(23)Problem Solving(16)알고리즘(16)Vapor(11)Server-side Swift(10)json(9)백준(8)프로그래머스(8)iOS(8)design patterns(5)protocol(5)optional(5)decoding(4)Fluent(4)class(4)TWL(4)@property(4)type(4)Class Diagram(4)Auto Layout(4)tableview(4)structure(3)prepare(for:sender:)(3)UITableViewDataSource(3)계산기 프로젝트(3)heroku(3)closure(3)Navigation Controller(3)extension(3)PostgreSQL(3)JSONDecoder(3)UITableViewDelegate(3)Decodable(3)decode(3)optional binding(3)programming design pattern(2)증분빌드(2)closure 축약 표현(2)NAMING(2)UI(2)Line-Wrapping(2)error handling(2)tca(2)Test Driven Development(2)Pseudo Code(2)method(2)TDD(2)associated value(2)Indentation(2)GCD(2)Dynamic Type(2)priority(2)programming architecture(2)CRCH(2)Generic(2)swift style guide(2)compression resistance(2)Segue(2)struct(2)associatedtype(2)sender(2)computer science(2)initializer(2)CR(2)REST API(2)만국박람회 프로젝트(2)XIB(2)Xcode(2)github(2)Grand Central Dispatch(2)content hugging(2)coding style(2)NIB(2)CH(2)Codable(2)constraint priorities(2)nil(2)accessibility(2)제어 구문(2)git(2)NSDataAsset(2)Storyboard Segue(2)Enum(2)refactoring(2)data type(2)indexPath(2)화면 전환 간 데이터 전달 방법(2)higher-order functions(2)model(2)uml(2)디버깅(2)instance(2)NumberFormatter(2)타입 선언 방식에 따른 값 변경 가능 여부(2)HIG(1)unconditional unwrapping(1)스토리보드 컴파일(1)UIlabel(1)가상 메소드 테이블(1)forced unwrapping(1)Uniform interface(1)viewWillAppear(1)View(1)테스트 주도 개발(1)multipart/form-data(1)flow control(1)for ~ in(1)데이터 전달(1)결합도(1)문자열 변경(1)while(1)SOLID(1)swift build system(1)rawValue(1)Data Transfer Object(1)문자열 교체(1)고차함수(1)kvo(1)argument lable(1)dictionary(1)Double(1)Int(1)abstraction(1)Name Space(1)console log(1)stack overflow(1)Reference Type(1)Swift Concurrency(1)fallthrough(1)os_log(1)조건문(1)viewDidDisappear(1)control-flow(1)error(1)any(1)반복문(1)switch(1)viewLoad(1)Scroll View(1)typealias(1)protocol conformance(1)static web(1)implicitly unwrapped optional(1)present modally(1)filter(1)validate(1)debugging(1)Application Programming Interface(1)빌드(1)optional unwrapping(1)Collection(1)coding test(1)String(1)viewDidLoad(1)bool(1)comment on code(1)clang(1)indent(1)concurrent queue(1)데이터베이스(1)withExtendedLifetime()(1)key value observing(1)cd(1)UIScrollView(1)synchronous(1)UInt(1)Quality of Service(1)if else(1)access level(1)hidden(1)constant(1)주니어 개발자 채용(1)Navigation Bar(1)reduce(1)Value Type(1)Unified Modeling Language(1)Swift Macros(1)Operating System(1)vtable(1)개발자(1)ios View Life Cycle(1)safeAreaInsets(1)데이터 타입(1)testExample(1)viewWillDisappear(1)UITableView(1)손 쉬운 사용(1)접근성(1)replacingOccurences(in:with:)(1)TaskLocal(1)storyboard compilation(1)swiftui(1)array(1)HATEOAS(1)swift 기본 문법(1)Accessibility Inspector(1)Strategy Pattern(1)behavior diagrams(1)Stack View(1)coreBluetooth(1)TechCast(1)template method pattern(1)백그라운드(1)incremental builds(1)indexPath.row(1)Automatic Reference Counting(1)Database(1)문자열 바꾸기(1)repeat-while(1)Map(1)텍스트 관련 UI(1)BLE(1)CRUD(1)자료형(1)글 쓰기 방법(1)string interpolation(1)swiftc(1)performSegue(withIdentifier:sender:)(1)Notification Center(1)Numeric protocol(1)delegate(1)운영체제(1)연관 값(1)serial queue(1)access control(1)NUMERIC(1)가독성(1)set(1)문서작성(1)Controller(1)DTO(1)열거형(1)Content Layout Guide(1)encapsulation(1)function(1)프로세스(1)Table View(1)Continued Deployment(1)assignment(1)self-descriptive(1)asynchronous(1)developer documentation(1)variable(1)concurrency(1)application/json(1)viewDidAppear(1)unit test(1)CodingKey(1)암시적 옵셔널 타입(1)final(1)CaseIterable(1)Human Interface Guidelines(1)API(1)연산 우선순위(1)anyObject(1)UITextView(1)server(1)comment in code(1)Enumeration(1)debugging log(1)암시적 추출 옵셔널(1)technical documentation(1)UITextField(1)stack(1)deployment(1)Pull Request(1)safe area(1)Linker(1)Datasource(1)process(1)QoS(1)dynamic web(1)if let(1)object lifetime(1)range(in:)(1)Frame Layout Guide(1)character(1)만국박람회(1)generalization(1)Namespace(1)Factory Pattern(1)Result type(1)validation(1)hiding(1)member-wise initializer(1)validatable(1)Unified Modelling Language(1)응집도(1)오늘의 고민(1)safeAreaLayoutGuide(1)Performance(1)ARC(1)Style Fonts(1)Process Scheduling(1)학습에 임하는 자세(1)structural diagrams(1)sequence diagram(1)Operations(1)declaration(1)variable parameter(1)AbortError(1)observable object lifetimes(1)operation queue(1)grammer(1)MVC(1)float(1)learning tree(1)Adaptor Pattern(1)
post-thumbnail

TCA Path에 화면을 추가했을 때 크래시가 난 이유

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

2026년 10월 26일
·
0개의 댓글
·
post-thumbnail

파일은 같은데, 빌드는 왜 다르게 판단할까

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

2026년 10월 12일
·
0개의 댓글
·
post-thumbnail

코드는 그대로인데, 빌드는 왜 느릴까

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

2026년 10월 12일
·
0개의 댓글
·
post-thumbnail

TaskLocal을 직접 쓰지 않았는데 왜 TaskLocal에서 크래시가 날까?

개발하던 iOS 앱에서 여러 API의 응답을 모아 보여주는 탭에 처음 들어가면 앱이 비정상 종료되는 문제가 발생했습니다. 당시 장애 기록에서는 iOS 16·17에서 발생했고 iOS 18 이상에서는 같은 증상이 나타나지 않았습니다. 문제가 된 코드는 withTaskGro

2026년 10월 11일
·
0개의 댓글
·
post-thumbnail

Service UUID가 있어도 iOS 백그라운드에서 BLE 기기를 찾지 못한 이유

공동현관 출입 서비스를 개발하면서 사용자가 앱을 열지 않아도 문 앞에서 출입할 수 있도록 하는 것이 목표였습니다. 제조사 SDK를 연동하던 중 iPhone 11 Pro의 iOS 16.5에서 문제가 나타났습니다. 앱을 켜면 발견되던 기기를 백그라운드에서는 찾지 못해, 출

2026년 10월 11일
·
0개의 댓글
·
post-thumbnail

[WWDC17] Behind the Scenes of the Xcode Build Process

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

2021년 10월 10일
·
0개의 댓글
·
post-thumbnail

multipart/form-data 알아보기 (vs application/json)

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

2021년 9월 26일
·
2개의 댓글
·
post-thumbnail

Storyboard의 컴파일 과정 알아보기

스토리보드는 어떻게 실행 가능한 형태로 변환되는걸까요? 컴파일 과정을 알아봅시다.

2021년 9월 26일
·
0개의 댓글
·
post-thumbnail

nib과 xib의 차이

자주 만나는 xib를 알아보고 nib와의 차이점에 대해 알아봅니다.

2021년 9월 26일
·
0개의 댓글
·
post-thumbnail

Safe area 정리

Safe area에 관련된 내용을 정리합니다.

2021년 9월 26일
·
0개의 댓글
·
post-thumbnail

Design patterns in Swift

Swift를 통해 디자인 패턴 적용 방법을 알아봅니다.

2021년 9월 20일
·
0개의 댓글
·
post-thumbnail

[디자인 패턴] Factory pattern in Swift

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

2021년 9월 20일
·
1개의 댓글
·
post-thumbnail

[디자인 패턴] Template method pattern in Swift

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

2021년 9월 20일
·
0개의 댓글
·
post-thumbnail

[디자인 패턴] Adapter pattern in Swift

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

2021년 9월 20일
·
0개의 댓글
·
post-thumbnail

[디자인 패턴] Strategy pattern in Swift

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

2021년 9월 18일
·
0개의 댓글
·
post-thumbnail

[Vapor/Swift] Vapor와 Heroku를 이용한 REST API 구성 및 배포

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

2021년 7월 7일
·
0개의 댓글
·
post-thumbnail

[Vapor/Swift] 에러 커스터마이징하기

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

2021년 7월 7일
·
0개의 댓글
·
post-thumbnail

[Vapor/Swift] Request contents 검증하기

Request contents를 검증하는 방법을 알아봅시다!

2021년 7월 7일
·
0개의 댓글
·
post-thumbnail

[Vapor/Swift] CRUD 기능 구현하기

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

2021년 7월 7일
·
0개의 댓글
·
post-thumbnail

[Vapor/Swift] 모델에 DTO 추가하기

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

2021년 7월 7일
·
0개의 댓글
·