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