Swift 프로그래밍 가이드

Swift 언어의 기초부터 고급 기법까지 배울 수 있는 필수 공식 입문서

Hello, Swift!

01. 문서 소개

02. Swift 언어 소개

03. 버전 호환성

Swift 기본

01. 소개

02. 상수와 변수

03. 주석

04. 세미콜론

05. 정수

06. 부동 소수점 숫자

07. 타입 안전성과 타입 추론

08. 숫자 리터럴

09. 숫자 타입 변환

10. 타입 별칭

11. Boolean 타입

12. 튜플

13. 옵셔널

14. 오류 처리

15. Assertions과 Preconditions

기본 연산자

01. 소개

02. 연산자 용어 정리

03. 할당 연산자

04. 산술 연산자

05. 복합 할당 연산자

06. 비교 연산자

07. 삼항 조건 연산자

08. nil 병합 연산자

09. 범위 연산자

10. 논리 연산자

문자열과 문자

01. 소개

02. 문자열 리터럴

03. 빈 문자열 초기화하기

04. 문자열 가변성

05. 문자열은 값 타입

06. 문자 다루기

07. 문자열과 문자 연결하기

08. 문자열 보간법

09. Unicode

10. 문자열의 문자 수 세기

11. 문자열 접근 및 수정하기

12. 부분문자열

13. 문자열 비교하기

14. 문자열의 Unicode 표현

컬렉션 타입

01. 소개

02. 컬렉션의 가변성

03. Array

04. Set

05. 집합 연산

06. Dictionary

제어 흐름

01. 소개

02. for-In 루프

03. while 반복문

04. 조건문

05. 제어 흐름 변경하기

06. 조기 종료

07. defer

08. API 사용 가능성 확인하기

함수

01. 소개

02. 함수 정의 및 호출

03. 함수 매개변수와 반환 값

04. 함수 인자 레이블과 매개변수 이름

05. 함수 타입

06. 중첩 함수

클로저

01. 소개

02. 클로저 표현식

03. 후행 클로저

04. 클로저와 값 캡처

05. 클로저는 참조 타입

06. 탈출 클로저

07. Autoclosures

열거형

01. 소개

02. 열거형 문법

03. 열거형과 switch 문

04. 열거형 Case 순회하기

05. 연관값

06. 원시값

07. 재귀 열거형

구조체와 클래스

01. 소개

02. 구조체와 클래스 비교

03. 구조체와 열거형은 값 타입

04. 클래스는 참조 타입

속성

01. 소개

02. 저장 속성

03. 계산 속성

04. 속성 옵저버

05. 속성 래퍼

06. 전역 변수와 지역 변수

07. 타입 속성

메서드

01. 소개

02. 인스턴스 메서드

03. 타입 메서드

서브스크립트

01. 소개

02. 서브스크립트 문법

03. 서브스크립트 사용법

04. 서브스크립트의 다양한 옵션

05. 타입 서브스크립트

상속

01. 소개

02. 기본 클래스 정의하기

03. 상속의 개념과 서브클래싱

04. 오버라이딩

05. 오버라이딩 방지하기

해제(Deinitialization)

01. 소개

02. 객체 해제

03. Deinitializer 사용 예제

옵셔널 체이닝

01. 소개

02. 강제 언래핑의 대안, 옵셔널 체이닝

03. 모델 클래스 정의

04. 옵셔널 체이닝을 통한 속성 접근

05. 옵셔널 체이닝을 통한 메서드 호출

06. 옵셔널 체이닝을 통한 서브스크립트 접근

07. 여러 단계의 옵셔널 체이닝 연결하기

08. 옵셔널 체이닝과 옵셔널 반환 값

오류 처리

01. 소개

02. 오류 표현과 오류 던지기

03. 오류 처리하기

04. 정리 동작 지정하기

동시성

01. 소개

02. 비동기 함수 정의와 호출

03. 비동기 시퀀스

04. 비동기 함수를 병렬로 호출하기

05. 태스크와 태스크 그룹

06. Actor

07. Sendable 타입

매크로

01. 소개

02. 독립형 매크로

03. 첨부형 매크로

04. 매크로 선언

05. 매크로 확장

06. 매크로 구현

07. 매크로 개발과 디버깅

타입 캐스팅

01. 클래스 계층 구조와 타입 캐스팅

02. 타입 확인하기

03. 다운캐스팅

04. Any와 AnyObject를 위한 타입 캐스팅

중첩 타입

01. 소개

02. 중첩 타입 실전 예제

03. 중첩 타입 참조하기

Extension

01. 소개

02. Extension 문법

03. Extension으로 계산 속성 추가하기

04. Extension으로 이니셜라이저 추가하기

05. Extension으로 메서드 추가하기

06. Extension으로 서브스크립트 추가하기

07. Extension으로 중첩 타입 추가하기

프로토콜

01. 소개

02. 프로토콜 문법

03. 프로토콜의 속성 요구사항

04. 프로토콜의 메서드 요구사항

05. 프로토콜의 변경 가능 메서드 요구사항

06. 프로토콜의 이니셜라이져 요구사항

07. 프로토콜을 타입으로 사용하기

08. Delegation 패턴

09. 프로토콜 준수를 Extension으로 추가하기

10. 자동 생성된 구현 사용하기

11. 프로토콜 타입의 컬렉션

12. 프로토콜 상속

13. 클래스 전용 프로토콜

14. 프로토콜 조합

15. 프로토콜 준수 여부 확인하기

16. 선택적인 프로토콜 요구사항

17. 프로토콜 확장

제네릭

01. 소개

02. 제네릭이 해결하는 문제

03. 제네릭 함수

04. 타입 매개변수

05. 타입 매개변수 이름 짓기

06. 제네릭 타입

07. 제네릭 타입 확장하기

08. 제네릭의 타입 제약

09. 연관 타입

10. 제네릭 Where절

11. 제네릭 Where 절을 사용한 확장

12. 컨텍스트 Where 절

13. 연관 타입과 제네릭 Where절

14. 제네릭 서브스크립트

불투명 타입과 박스형 타입

01. 소개

02. 불투명 타입이 해결하는 문제

03. 불투명 타입 반환하기

04. 박스형 타입

05. 불투명 타입과 박스형 프로토콜 타입의 차이점 1편

06. 불투명 타입과 박스형 프로토콜 타입의 차이점 2편

Automatic Reference Counting

01. 소개

02. ARC는 어떻게 동작하는가?

03. 실전 ARC!

04. 강한 참조 순환 이해하기

05. 클래스 인스턴스 사이의 강한 참조 순환 해결하기

06. 클로저로 인한 강한 참조 순환

07. 클로저와 클래스 인스턴스 사이의 강한 참조 순환 해결하기

메모리 안전성

01. 소개

02. 메모리에 대한 접근 충돌 이해하기

03. In-Out 매개변수에 대한 접근 충돌

04. 메서드에서 self에 대한 접근 충돌

05. 속성에 대한 접근 충돌

접근 제어

01. 소개

02. 모듈과 소스 파일

03. 접근 수준

04. 접근 제어 문법

05. 타입별 접근 제어

06. 하위 클래스 정의 및 멤버 오버라이딩

07. 상수, 변수, 속성 및 서브스크립트의 접근 제어

08. 이니셜라이저의 접근 제어

09. 프로토콜의 접근 제어

10. Extensions

11. 제네릭 접근 수준

12. 타입 별칭 접근 제어

고급 연산자

01. 소개

02. 비트 연산자

03. 오버플로우 연산자

04. 연산자 우선순위와 결합 방향

05. 연산자 메서드

06. 사용자 정의 연산자

07. Result Builder로 선언형 코드 작성하기