Swift 학습 로드맵
기초부터 중급·심화까지 난이도 순서로 익힙니다.
LANGUAGE · 52 ARTICLES
언어 기능을 문법 목록으로 외우기보다 왜 이런 규칙이 생겼는지부터 살펴봅니다. 기초 문법에서 메모리, 타입 시스템, 동시성과 Objective-C 런타임까지 깊이를 단계적으로 쌓습니다.
주제 지도
기초부터 중급·심화까지 난이도 순서로 익힙니다.
값·참조 타입, ARC와 런타임 동작을 파고듭니다.
async/await, actor와 Sendable의 원리를 연결합니다.
문법과 메시지 디스패치, 런타임을 이해합니다.
처음 읽기
기초 개념에서 다음 단계로 자연스럽게 이어지는 글을 골랐습니다.
Swift를 배울 때 처음 만나는 관문이 옵셔널입니다. String?의 물음표, if let, guard let, !, ??. 문법 종류가 많아서 각각을 따로 외우다 보면 규칙이 뒤죽박죽되기 쉽습니다.
읽어보기클로저 편에서 [weak self]로 순환 참조를 끊는 법을 다뤘을 때, 한 가지 질문을 미뤄뒀습니다. weak 말고 unowned도 있던데, 뭐가 다르고 언제 쓰는 걸까요. 이 질문에 답하려면 그 아래 층, ARC가 실제로 어떻게 돌아가는지부터 봐야 합니다.
읽어보기await에서 멈추는 것은 스레드가 아니라 함수입니다. 함수가 상태를 힙에 저장하고 스레드를 협력형 풀에 반납하는 suspension의 정확한 의미와, 순차 await가 병렬 실행이 아닌 이유를 정리했습니다.
읽어보기전체 글
2019년 Swift 5와 iOS 12.2 배포 후 앱 용량이 줄어든 것은 ABI 안정성 덕분입니다. 앱마다 품고 다니던 Swift 런타임이 OS로 옮겨간 과정과 모듈 안정성, @frozen의 트레이드오프를 정리했습니다.
읽어보기동기·비동기는 작업 완료를 누가 챙기느냐의 축이고, 블로킹·논블로킹은 제어권을 바로 돌려주느냐의 축입니다. 두 축이 독립이라 2×2 네 조합이 모두 존재하는 이유를 Swift 예시와 함께 정리했습니다.
읽어보기파일 핸들이나 락처럼 하나여야 의미 있는 자원은 복사되면 안 됩니다. Swift 5.9의 ~Copyable로 복사 금지를 타입에 새기는 법과 borrowing·consuming·inout 세 전달 방식, 쓸 자리와 안 쓸 자리를 정리했습니다.
읽어보기Swift 5.9의 매크로는 컴파일러에 꽂는 코드 생성 플러그인입니다. 구문 트리를 받아 코드를 돌려주는 동작 원리와 freestanding(#)·attached(@) 두 갈래, 직접 만들 때 치르는 비용을 정리했습니다.
읽어보기struct 크기는 프로퍼티 크기의 단순 합이 아닙니다. size·stride·alignment와 패딩, extra inhabitant를 활용하는 Optional, 64비트 existential container의 실측을 정리했습니다.
읽어보기메서드 호출은 직접 호출·vtable·objc_msgSend 세 방식으로 컴파일됩니다. final과 private이 성능 키워드가 되는 메커니즘과 프로토콜 extension의 함정, 프로파일러로 확인하는 법을 정리했습니다.
읽어보기KVO는 옵저버를 붙이는 순간 런타임이 객체의 클래스를 동적 서브클래스로 바꿔치기합니다. isa-swizzling의 동작과 class가 거짓말을 하는 이유, setter를 거치지 않으면 알림이 오지 않는 조건을 정리했습니다.
읽어보기구조적 동시성은 비동기 작업의 끝을 누가 책임지는가에 답합니다. 자식 작업이 부모 스코프를 벗어나지 못하는 원리와 취소 신호가 전파되는 방식, Task.detached를 쓸 때 수동으로 되사야 하는 보장을 정리했습니다.
읽어보기Swift 6 모드를 켜면 쏟아지는 동시성 에러의 주인공은 Sendable입니다. 값이 격리 경계를 넘어도 되는지 묻는 이 프로토콜의 의미와, struct화·불변화·actor 승격 순으로 밟는 마이그레이션 처방을 정리했습니다.
읽어보기카테고리는 ivar를 추가할 수 없지만 Associated Objects로 값을 매달 수 있습니다. 객체 옆 사이드 테이블에 저장되는 원리와 카테고리 프로퍼티 완성형, assign만 조심하면 되는 메모리 정책을 정리했습니다.
읽어보기델리게이트와 클로저는 같은 콜백 요구를 처리하지만 결이 다릅니다. 같은 예제를 나란히 구현해 드러나는 다섯 가지 실질 차이와, 이벤트 개수·관계 수명·반환값 필요 여부로 고르는 기준을 정리했습니다.
읽어보기actor는 자기 상태를 스스로 지키는 네 번째 타입 종류입니다. 동시 접근을 줄 세워 데이터 레이스를 컴파일러가 잡는 문제로 바꾸는 원리와, 가장 유명한 함정인 재진입(reentrancy)까지 정리했습니다.
읽어보기