# Swift 문법 학습 자료

## [Chapter 01. 애플의 새로운 언어, 스위프트](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01.)

### [1.1 스위프트 언어의 탄생과 배경](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01./1.1)

### [1.2 스위프트 언어의 특징](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01./1.2)

#### [1.2.1 스위프트 언어에서 차용하고 있는 주요 기능들](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01./1.2/1.2.1)

#### [1.2.2 구조적 특징](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01./1.2/1.2.1)

### [1.3 오브젝티브-C vs 스위프트](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-01./1.3-c-vs)

## [Chapter 02. Xcode와 친해지기](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode)

### [2.1 통합개발 환경](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.1)

#### [2.1.1 통합개발 환경 이전의 프로그래밍](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.1/2.1.1)

#### [2.1.2 통합개발 환경의 등장](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.1/2.1.2)

### [2.2 Xcode란? ](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.2-xcode)

### [2.3 Xcode 설치하기](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.3-xcode)

#### [2.3.1 정식 버전 설치 : 앱스토어를 통하여](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.3-xcode/2.3.1)

#### [2.3.2 베타 버전 설치 : 애플 개발자 사이트](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.3-xcode/2.3.2)

### [2.4 Xcode 실행하기](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.4-xcode)

#### [2.4.1 첫 번째 메뉴, 플레이그라운드 시작하기](#2.4.1)

#### [2.4.2 두 번째 메뉴, Xcode 프로젝트 생성하기](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.4-xcode/2.4.2-xcode)

### [2.5 Xcode의 구성 요소](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.5-xcode)

#### [2.5.1 툴바 영역](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.5-xcode/2.5.1)

#### [2.5.2 내비게이터 영역](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.5-xcode/2.5.2)

#### [2.5.3 에디터 영역](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.5-xcode/2.5.3)

#### [2.5.4 디버그 영역](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-02.-xcode/2.5-xcode/2.5.4)

## [Chapter 03. 기본 문법 : 이것이 바로 스위프트](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-03.)

### [3.1 스위프트 기초 문법](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-03./3.1)&#x20;

### [3.2 변수와 상수](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-03./3.2)

#### [3.2.1 변수와 상수를 정의하는 방법](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-03./3.2/3.2.1)

#### [3.2.2 변수와 상수의 이름 정의하기](https://nbcamp-1.gitbook.io/swift-handbook/swift/chapter-03./3.2/3.2.2)

### [3.3 자료형](#3.3)

#### [3.3.1 기본 자료형](#https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.1) <a href="#https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.1" id="https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.1"></a>

#### [3.3.2 타입 추론과 타입 어노테이션](#https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.2) <a href="#https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.2" id="https-jiwoong-han.gitbook.io-swift-swift-chapter-03.-3.3-3.3.2"></a>

#### [3.3.3 타입이 다른 변수끼리의 결합](#3.3.3)

#### [3.3.4 스위프트4에서의 문자열 처리](#3.3.4-4)

### [3.4 연산자](#3.4)

#### [3.4.1 산술 연산자](#3.4.1)

#### [3.4.2 비교 연산자](#3.4.2)

#### [3.4.3 논리 연산자 ](#3.4.3)

#### [3.4.4 범위 연산자](#3.4.4)

#### [3.4.5 대입 연산자](#3.4.5)

## [Chapter 04. 흐름 제어 구문 코드의 활용성을 높여주는 도구들](#chapter-04.)

### [4.1 반복문](#4.1)

#### [4.1.1 for \~ in 구문](#4.1.1-for-in)

#### [4.1.2 while 구문 ](#4.1.2-while)

#### [4.1.3 repeat\~while 구문 ](#4.1.3-repeat-while)

### [4.2 조건문](#4.2)

#### [4.2.1 if 구문](#4.2.1-if)

#### [4.2.2 guard 구문](#4.2.2-guard)

#### [4.2.3 #available 구문](#4.2.3-available)

#### [4.2.4 switch 구문](#4.2.4-switch)

### [4.3 제어 전달문](#4.3)

## [Chapter 05. 집단 자료형 : 연관된 데이터를 손쉽게 다루기](#chapter-05.)

### [5.1 배열](#5.1)

#### [5.1.1 배열 순회 탐색](#5.1.1)

#### [5.1.2 배열의 동적 선언과 초기화](#5.1.2)

#### [5.1.3 배열 아이템 동적 추가](#5.1.3)

#### [5.1.4 범위 연산자를 이용한 인덱스 참조](#5.1.4)

### [5.2 집합](#5.2)

#### [5.2.1 집합의 정의](#5.2.1)

#### [5.2.2 집합 순회 탐색](#5.2.2)

#### [5.2.3 집합의 동적 추가와 삭제](#5.2.3)

#### [5.2.4 집합 연산](#5.2.4)

### [5.3 튜플](#5.3)

### [5.4 딕셔너리](#5.4)

#### [5.4.1 딕셔너리의 선언과 초기화](#5.4.1)

#### [5.4.2 딕셔너리에 독적으로 아이템 추가하기](#5.4.2)

#### [5.4.3 딕셔너리의 순회 탐색](#5.4.3)

## [Chapter 06. 옵셔널 : 스위프트가 잠재적 오류를 다루는 방법](#chapter-06.)

### [6.1 옵셔널 타입 선언과 정의](#6.1)

### [6.2 옵셔널 값 처리](#6.2.2)

#### [6.2.1 옵셔널 강제 해제](#6.2.1)

#### [6.2.2 옵셔널 바인딩](#6.2.2)

#### [6.2.3 컴파일러에 의한 옵셔널 자동 해제](#6.2.3)

#### [6.2.4 옵셔널의 묵시적 해제](#6.2.4)

## [Chapter 07. 함수 : 함수가 갑입니다](#chapter-07.)

### [7.1 함수의 기본 개념](#7.1)

#### [7.1.1 사용자 정의 함수](#7.1.1)

#### [7.1.2 함수의 호출 ](#7.1.2)

#### [7.1.3 함수의 반환값과 튜플](#7.1.3)

### [7.2 매개변수](#7.2)

#### [7.2.1 내부 매개변수명, 외부 매개변수명](#7.2.1)

#### [7.2.2 가변 인자](#7.2.2)

#### [7.2.3 기본값을 갖는 매개변수](#7.2.3)

#### [7.2.4 매개변수의 수정](#7.2.4)

#### [7.2.5 InOut 매개변수](#7.2.5-inout)

#### [7.2.6 변수의 생존 범위와 생명 주기](#7.2.6)

### [7.3 일급 객체로서의 함수](#7.3.2)

#### [7.3.1. 일급 함수의 특성](#7.3.1.)

#### [7.3.2 함수의 중첩](#7.3.2)

### [7.4 클로저](#7.4)

#### [7.4.1 클로저 표현식](#7.4.1)

#### [7.4.2 클로저 표현식과 경량 문법](#7.4.2)

#### [7.4.3 트레일링 클로저(Trailing Closure)](#7.4.3-trailing-closure)

#### [7.4.4  @escaping과 @autoescape](#7.4.4-escaping-autoescape)

## [Chapter 08. 구조체와 클래스 : 객체지향 스위프트](#chapter-08.)

### [8.1 구조체와 클래스의 기본 개념](#8.1)

#### [8.1.1 정의 구문](#8.1.1)

#### [8.1.2 메소드와 프로퍼티](#8.1.2)

#### [8.1.3 인스턴스](#8.1.3)

#### [8.1.4 초기화](#8.1.4)

#### [8.1.5 구조체의 값 전달 방식 : 복사에 의한 전달](#8.1.5)

#### [8.1.6 클래스의 값 전달 방식 : 참조에 의한 전달 ](#8.1.6)

### [8.2 프로퍼티](#8.2)

#### [8.2.1 저장 프로퍼티](#8.2.1)

#### [8.2.2 연산 프로퍼티](#8.2.2)

#### [8.2.3 프로퍼티 옵저버](#8.2.3)

#### [8.2.4 타입 프로퍼티](#8.2.4)

### [8.3 메소드](#8.3)

#### [8.3.1 인스턴스 메소드](#8.3.1)

#### [8.3.2 타입 메소드](#8.3.2)

### [8.4 상속](#8.4)

#### [8.4.1 서브클래싱](#8.4.1)

#### [8.4.2 오버라이딩](#8.4.2)

### [8.5 타입 캐스팅](#8.5)

#### [8.5.1 타입 비교 연산](#8.5.1)

#### [8.5.2 타입 캐스팅 연산](#8.5.2)

#### [8.5.3 Any, AnyObject](#8.5.3-any-anyobject)

### [8.6 초기화 구문](#8.6)

#### [8.6.1 init 초기화 메소드](#8.6.1-init)

#### [8.6.2 초기화 구문의 오버라이딩](#8.6.2)

### [8.7 옵셔널 체인](#8.7)

#### [8.7.1 옵셔널 타입의 문제점](#8.7.1)

#### [8.7.2 옵셔널 체인](#8.7.2)
