← Study Hub

iOS 기술면접 — 모던 스택 5종

Concurrency·TCA·SwiftUI·Tuist·Combine 스택 지도와 심화 5챕터
진행률
0 / 0 완료

요즘 iOS 채용공고의 기술 스택은 다섯 개로 수렴합니다 — SwiftUI · Swift Concurrency · TCA · Tuist · Combine. 이 다섯은 따로 노는 목록이 아니라 한 화면을 만들 때 각자 다른 층을 맡는 한 벌입니다. 면접에서 갈리는 지점도 개별 API 암기가 아니라 이 층들이 어디서 만나고 어디서 충돌하는가입니다.

다섯 스택은 어느 층을 맡는가

Tuist — 모듈 경계 · 빌드 · 링킹 (전체를 담는 그릇) SwiftUI 화면 — 상태를 받아 뷰를 그린다 · identity · 재평가 State 구독 TCA 상태 — Action을 받아 State를 바꾸고 Effect를 내보낸다 Effect Swift Concurrency 한 번 요청 → 한 번 응답 Combine 값이 계속 흐르는 스트림
다섯 스택의 역할 분담. 위에서 아래로 화면 → 상태 → 비동기이고, 전체를 Tuist 모듈 경계가 감쌉니다. 면접 질문은 대부분 층과 층이 만나는 화살표 위에서 나옵니다.
🔑 핵심

Concurrency와 Combine이 같은 층에 나란히 있는 게 포인트입니다. 둘은 대체재가 아니라 "한 번 응답"과 "계속 흐름"이라는 다른 모양의 비동기를 맡습니다. 이 구분을 못 하면 "왜 여기는 async/await이고 저기는 Publisher냐"는 질문에서 막힙니다.

이 코스가 다루는 범위

다섯 스택 중 Concurrency와 SwiftUI는 이 허브에 이미 전용 코스가 있습니다. 같은 내용을 두 벌 만들지 않기 위해, 이 코스는 아직 전용 문서가 없던 다섯 주제를 깊게 다루고 나머지는 기존 코스로 연결합니다.

주제어디서 배우나상태
TCA이 코스 01장신규
Tuist · 모듈 아키텍처이 코스 02장신규
모듈 간 화면 이동 · DI이 코스 03장신규
Combine이 코스 04장신규
라이브코딩 · 설계 토론이 코스 05장신규
Swift ConcurrencySwift Concurrency 면접 꼬리질문 10선기존 코스
SwiftUISwiftUI 로드맵기존 코스
Swift 언어 · 메모리Swift & Foundation 로드맵기존 코스

챕터

01 · TCA — 단방향 아키텍처의 완성형

State·Action·Reducer·Effect의 실제 구조, Scope/ifLet/forEach 합성, TestStore의 완전성 검증, 그리고 언제 쓰지 말아야 하는지까지. MVVM·ReactorKit과의 계보 비교를 함께 다룹니다.

01장 열기 →

02 · Tuist · 모듈 아키텍처

Interface/Implementation 분리가 왜 빌드를 빠르게 하는지, static과 dynamic 링킹의 트레이드오프, 동적 프레임워크 개수가 앱 시작 시간에 미치는 영향, 그리고 모듈을 너무 잘게 쪼갤 때 생기는 역효과.

02장 열기 →

03 · 모듈 간 화면 이동

모듈을 나누면 바로 부딪히는 벽 — 다른 모듈의 화면을 못 띄운다. Factory·클로저·Route enum·DI 컨테이너 네 방식을 결합 범위 축에서 비교하고, AnyView의 실제 비용과 반론까지 짚습니다.

03장 열기 →

04 · Combine — RxSwift에서 넘어오기

대응표로 끝내면 안 되는 진짜 차이 세 가지 — 타입에 박힌 Failure, demand 기반 백프레셔, 리플레이 없는 share(). 메모리 누수 함정과 async/await 브릿지까지.

04장 열기 →

05 · 라이브코딩 · 설계 토론

검색 화면·무한 스크롤·이미지 캐시 같은 단골 과제의 채점 포인트, "불가능한 상태를 표현 불가능하게" 만드는 상태 모델링, 그리고 설계 토론에서 쓸 레이어 뼈대.

05장 열기 →

추천 학습 경로

01 · TCA 상태 설계 02 · Tuist 코드를 담는 그릇 03 · 화면 이동 모듈을 잇는 법 04 · Combine 비동기의 다른 모양 05 · 실전 합쳐서 쓰기
01→05 순서대로 읽으면 상태 → 구조 → 연결 → 비동기 → 통합으로 이어집니다. 02와 03은 붙어 있으니 같이 읽는 게 좋습니다.
📝 노트

코드 예시는 TCA 1.x(@Reducer·@ObservableState 기준), Swift 6.x, iOS 17+ API를 기준으로 씁니다. 그 이전 버전과 문법이 다른 지점은 본문에서 따로 표시합니다.

출처 · 참고자료