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로 선언형 코드 작성하기