PART I 스위프트 기초
CHAPTER 1 스위프트
__1.1 스위프트의 역사
__1.2 스위프트의 언어적 특성
____1.2.1 객체지향
____1.2.2 함수형
____1.2.3 프로토콜 지향
__1.3 스위프트 실행 환경
____1.3.1 Xcode – 플레이그라운드
____1.3.2 REPL
____1.3.3 웹
____1.3.4 모바일
CHAPTER 2 스위프트 처음 시작하기
__2.1 기본 명명 규칙
__2.2 콘솔 로그
____2.2.1 print() 함수
____2.2.2 문자열 보간법
__2.3 주석
____2.3.1 주석 남기기
____2.3.2 마크업 문법을 활용한 문서화 주석
__2.4 변수와 상수
____2.4.1 변수
____2.4.2 상수
CHAPTER 3 데이터 타입 기본
__3.1 Int와 UInt
__3.2 Bool
__3.3 Float과 Double
__3.4 Character
__3.5 String
____3.5.1 특수문자
__3.6 Any, AnyObject와 nil
CHAPTER 4 데이터 타입 고급
__4.1 데이터 타입 안심
____4.1.1 데이터 타입 안심이란
____4.1.2 타입 추론
__4.2 타입 별칭
__4.3 튜플
__4.4 컬렉션 타입
____4.4.1 배열
____4.4.2 딕셔너리
____4.4.3 세트
__4.5 열거형
____4.5.1 기본 열거형
____4.5.2 원시 값
____4.5.3 연관 값
____4.5.4 순환 열거형
CHAPTER 5 연산자
__5.1 연산자의 종류
____5.1.1 할당 연산자
____5.1.2 산술 연산자
____5.1.3 비교 연산자
____5.1.4 삼항 조건 연산자
____5.1.5 범위 연산자
____5.1.6 부울 연산자
____5.1.7 비트 연산자
____5.1.8 복합 할당 연산자
____5.1.9 오버플로 연산자
____5.1.10 기타 연산자
__5.2 연산자 우선순위와 결합방향
__5.3 사용자정의 연산자
____5.3.1 전위 연산자 정의와 구현
____5.3.2 후위 연산자 정의와 구현
____5.3.3 중위 연산자 정의와 구현
CHAPTER 6 흐름 제어
__6.1 조건문
____6.1.1 if 구문
____6.1.2 switch 구문
__6.2 반복문
____6.2.1 for-in 구문
____6.2.2 while 구문
____6.2.3 repeat-while 구문
__6.3 구문 이름표
CHAPTER 7 함수
__7.1 함수와 메서드
__7.2 함수의 정의와 호출
____7.2.1 기본적인 함수의 정의와 호출
____7.2.2 매개변수
____7.2.3 반환 타입
____7.2.4 데이터 타입으로서의 함수
__7.3 중첩 함수
__7.4 종료되지 않는 함수
__7.5 반환 값을 무시할 수 있는 함수
CHAPTER 8 옵셔널
__8.1 옵셔널 사용
__8.2 옵셔널 추출
____8.2.1 강제 추출
____8.2.2 옵셔널 바인딩
____8.2.3 암시적 추출 옵셔널
PART II 객체지향 프로그래밍과 스위프트
CHAPTER 9 구조체와 클래스
__9.1 구조체
____9.1.1 구조체 정의
____9.1.2 구조체 인스턴스의 생성 및 초기화
__9.2 클래스
____9.2.1 클래스 정의
____9.2.2 클래스 인스턴스의 생성과 초기화
____9.2.3 클래스 인스턴스의 소멸
__9.3 구조체와 클래스의 차이
____9.3.1 값 타입과 참조 타입
____9.3.2 스위프트의 기본 데이터 타입은 모두 구조체
__9.4 구조체와 클래스 선택해서 사용하기
CHAPTER 10 프로퍼티와 메서드
__10.1 프로퍼티
____10.1.1 저장 프로퍼티
____10.1.2 지연 저장 프로퍼티
____10.1.3 연산 프로퍼티
____10.1.4 프로퍼티 감시자
____10.1.5 전역변수와 지역변수
____10.1.6 타입 프로퍼티
____10.1.7 키 경로
__10.2 메서드
____10.2.1 인스턴스 메서드
____10.2.2 타입 메서드
CHAPTER 11 인스턴스 생성 및 소멸
__11.1 인스턴스 생성
____11.1.1 프로퍼티 기본값
____11.1.2 이니셜라이저 매개변수
____11.1.3 옵셔널 프로퍼티 타입
____11.1.4 상수 프로퍼티
____11.1.5 기본 이니셜라이저와 멤버와이즈 이니셜라이저
____11.1.6 초기화 위임
____11.1.7 실패 가능한 이니셜라이저
____11.1.8 함수를 사용한 프로퍼티 기본값 설정
__11.2 인스턴스 소멸
CHAPTER 12 접근제어
__12.1 접근제어란
____12.1.1 접근제어의 필요성
____12.1.2 모듈과 소스파일
__12.2 접근수준
____12.2.1 공개 접근수준, public
____12.2.2 개방 접근수준, open
____12.2.3 내부 접근수준, internal
____12.2.4 파일외부비공개 접근수준, fileprivate
____12.2.5 비공개 접근수준, private
__12.3 접근제어 구현
__12.4 접근제어 구현 참고사항
__12.5 private와 fileprivate
__12.6 읽기 전용 구현
PART III 함수형 프로그래밍과 스위프트
CHAPTER 13 클로저
__13.1 기본 클로저
__13.2 후행 클로저
__13.3 클로저 표현 간소화
____13.3.1 문맥을 이용한 타입 유추
____13.3.2 단축 인자 이름
____13.3.3 암시적 반환 표현
____13.3.4 연산자 함수
__13.4 값 획득
__13.5 클로저는 참조 타입
__13.6 탈출 클로저
____13.6.1 withoutActuallyEscaping
__13.7 자동 클로저
CHAPTER 14 옵셔널 체이닝과 빠른종료
__14.1 옵셔널 체이닝
__14.2 빠른종료
CHAPTER 15 맵, 필터, 리듀스
__15.1 맵
__15.2 필터
__15.3 리듀스
__15.4 맵, 필터, 리듀스의 활용
CHAPTER 16 모나드
__16.1 컨텍스트
__16.2 함수객체
__16.3 모나드
PART IV 확장
CHAPTER 17 서브스크립트
__17.1 서브스크립트 문법
__17.2 서브스크립트 구현
__17.3 복수 서브스크립트
CHAPTER 18 상속
__18.1 클래스 상속
__18.2 재정의
____18.2.1 메서드 재정의
____18.2.2 프로퍼티 재정의
____18.2.3 프로퍼티 감시자 재정의
____18.2.4 서브스크립트 재정의
____18.2.5 재정의 방지
__18.3 클래스의 이니셜라이저 – 상속과 재정의
____18.3.1 지정 이니셜라이저와 편의 이니셜라이저
____18.3.2 클래스의 초기화 위임
____18.3.3 2단계 초기화
____18.3.4 이니셜라이저 상속 및 재정의
____18.3.5 이니셜라이저 자동 상속
____18.3.6 요구 이니셜라이저
CHAPTER 19 타입캐스팅
__19.1 기존 언어의 타입 변환과 스위프트의 타입 변환
__19.2 스위프트 타입캐스팅
__19.3 데이터 타입 확인
__19.4 다운캐스팅
__19.5 Any, AnyObject의 타입캐스팅
CHAPTER 20 프로토콜
__20.1 프로토콜이란
__20.2 프로토콜 정의
__20.3 프로토콜 요구사항
____20.3.1 프로퍼티 요구
____20.3.2 메서드 요구
____20.3.3 가변 메서드 요구
____20.3.4 이니셜라이저 요구
__20.4 프로토콜의 상속과 클래스 전용 프로토콜
__20.5 프로토콜 조합과 프로토콜 준수 확인
__20.6 프로토콜의 선택적 요구
__20.7 프로토콜 변수와 상수
__20.8 위임을 위한 프로토콜
CHAPTER 21 익스텐션
__21.1 익스텐션이란
__21.2 익스텐션 문법
__21.3 익스텐션으로 추가할 수 있는 기능
____21.3.1 연산 프로퍼티
____21.3.2 메서드
____21.3.3 이니셜라이저
____21.3.4 서브스크립트
____21.3.5 중첩 데이터 타입
CHAPTER 22 제네릭
__22.1 제네릭 함수
__22.2 제네릭 타입
__22.3 제네릭 타입 확장
__22.4 타입 제약
__22.5 프로토콜의 연관 타입
__22.6 제네릭 서브스크립트
CHAPTER 23 프로토콜 지향 프로그래밍
__23.1 프로토콜 초기구현
__23.2 맵, 필터, 리듀스 직접 구현해보기
__23.3 기본 타입 확장
PART V 스위프트 고급
CHAPTER 24 타입 중첩
__24.1 중첩 데이터 타입
CHAPTER 25 패턴
__25.1 와일드카드 패턴
__25.2 식별자 패턴
__25.3 값 바인딩 패턴
__25.4 튜플 패턴
__25.5 열거형 케이스 패턴
__25.6 옵셔널 패턴
__25.7 타입캐스팅 패턴
__25.8 표현 패턴
CHAPTER 26 where 절
__26.1 where 절의 활용
CHAPTER 27 ARC
__27.1 ARC란
__27.2 강한참조
____27.2.1 강한참조 순환 문제
__27.3 약한참조
__27.4 미소유참조
__27.5 미소유참조와 암시적 추출 옵셔널 프로퍼티
__27.6 클로저의 강한참조 순환
____27.6.1 획득목록
CHAPTER 28 오류처리
__28.1 오류처리란
__28.2 오류의 표현
__28.3 오류 포착 및 처리
____28.3.1 함수에서 발생한 오류 알리기
____28.3.2 do-catch 구문을 이용하여 오류처리
____28.3.3 옵셔널 값으로 오류처리
____28.3.4 오류가 발생하지 않을 것이라고 확신하는 방법
____28.3.5 다시던지기
____28.3.6 후처리 defer
부록
__A. 스위프트의 주요 프로토콜
__B. 스위프트의 주요 함수
__C. 스위프트의 예약어
__D. 디버깅 식별자
__E. 컴파일러 제어 구문
____E.1 조건부 컴파일 블록
____E.2 라인 제어 구문
__F. 사용 가능 조건 확인
__G. 속성
____G.1 선언 속성
____G.2 타입 속성
__H. 타입 별칭 및 호환 타입