스위프트 5의 핵심 키워드는 ‘안정화’다. ABI 안정화 덕분에 버전과 환경에 크게 영향받지 않고 더 유연하게 스위프트를 사용할 수 있게 되었다. 최신 패러다임과 다양한 언어의 기능을 흡수하여 언어 전반에 걸쳐 안정화되었다. 기존 스위프트 업데이트의 주된 목적이 새로운 기능 추가였다면, 이번 스위프트 5는 비약적으로 발전한 기능을 세세하게 보정하고 다듬었다. 그렇다고 굵직한 변화가 없는 것은 아니다. 스위프트 언어의 발전은 여전히 현재 진행형이다.
스위프트 프로그래밍 핵심 패러다임 기반으로 설명
스위프트에는 함수형과 프로토콜 지향 프로그래밍 기법이 포함되어 있다. 이 책은 이 두 가지 패러다임에 맞춰 스위프트로 프로그래밍하는 방법을 설명한다. 스위프트 문법과 프로그래밍 패러다임을 함께 이 해하고 싶다면 이 책은 큰 도움이 될 것이다.
저자소개
yagom’s blog(http://blog.yagom.net)를 운영하는 iOS 개발자. 2010년부터 iOS 관련 개발에 열정을 쏟고 있습니다. iOS, macOS 개발자 커뮤니티인 맥부기(http://cafe.naver.com/mcbugi)에서 강좌를 연재했고, OSXDev(http://osxdev.org) 커뮤니티 활동도 하고 있습니다. 컴퓨터교육을 전공했으며 비전공자와 학생들에게 컴퓨터 지식을 더 쉽고 재미있게 알리는 데 관심이 많아 후배 프로그래머와 지식을 나누는 데도 힘을 쏟고 있습니다. 내일 걱정은 모레 하는 것이 좋다는 긍정적인 마음가짐을 빼면 시체라고 말하며, 스스로 개발자라고 생각하지 않는 것을 보면 괴짜임이 틀림없습니다. 무엇보다 여행과 요리를 좋아합니다.
저서로는 『iOS 7 핵심 노트』, 『iOS 8 핵심 노트』, 『iOS 9 핵심 노트』, 『만들면서 배우는 Swift』, 『스위프트 프로그래밍』(이상 한빛미디어)이 있습니다.
목차
[PART I 스위프트 기초]CHAPTER 1 스위프트__1.1 스위프트의 역사__1.2 스위프트의 언어적 특성__1.3 스위프트 실행 환경CHAPTER 2 스위프트 처음 시작하기__2.1 기본 명명 규칙__2.2 콘솔 로그__2.3 주석__2.4 변수와 상수CHAPTER 3 데이터 타입 기본__3.1 Int와 UInt__3.2 Bool__3.3 Float과 Double__3.4 Character__3.5 String__3.6 Any, AnyObject와 nilCHAPTER 4 데이터 타입 고급__4.1 데이터 타입 안심__4.2 타입 별칭__4.3 튜플__4.4 컬렉션형__4.5 열거형CHAPTER 5 연산자__5.1 연산자의 종류__5.2 연산자 우선순위와 결합방향__5.3 사용자 정의 연산자CHAPTER 6 흐름 제어__6.1 조건문__6.2 반복문__6.3 구문 이름표CHAPTER 7 함수__7.1 함수와 메서드__7.2 함수의 정의와 호출__7.3 중첩 함수__7.4 종료되지 않는 함수__7.5 반환 값을 무시할 수 있는 함수CHAPTER 8 옵셔널__8.1 옵셔널 사용__8.2 옵셔널 추출[PART II 객체지향 프로그래밍과 스위프트]CHAPTER 9 구조체와 클래스__9.1 구조체__9.2 클래스__9.3 구조체와 클래스의 차이__9.4 구조체와 클래스 선택해서 사용하기CHAPTER 10 프로퍼티와 메서드__10.1 프로퍼티__10.2 메서드CHAPTER 11 인스턴스 생성 및 소멸__11.1 인스턴스 생성__11.2 인스턴스 소멸CHAPTER 12 접근제어__12.1 접근제어란__12.2 접근수준__12.3 접근제어 구현__12.4 접근제어 구현 참고사항__12.5 private와 fileprivate__12.6 읽기 전용 구현[PART III 함수형 프로그래밍과 스위프트]CHAPTER 13 클로저__13.1 기본 클로저__13.2 후행 클로저__13.3 클로저 표현 간소화__13.4 값 획득__13.5 클로저는 참조 타입__13.6 탈출 클로저__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 복수 서브스크립트__17.4 타입 서브스크립트CHAPTER 18 상속__18.1 클래스 상속__18.2 재정의__18.3 클래스의 이니셜라이저 - 상속과 재정의CHAPTER 19 타입캐스팅__19.1 기존 언어의 타입 변환과 스위프트의 타입 변환__19.2 스위프트 타입캐스팅__19.3 데이터 타입 확인__19.4 다운캐스팅__19.5 Any, AnyObject의 타입캐스팅CHAPTER 20 프로토콜__20.1 프로토콜이란__20.2 프로토콜 채택__20.3 프로토콜 요구사항__20.4 프로토콜의 상속과 클래스 전용 프로토콜__20.5 프로토콜 조합과 프로토콜 준수 확인__20.6 프로토콜의 선택적 요구__20.7 프로토콜 변수와 상수__20.8 위임을 위한 프로토콜CHAPTER 21 익스텐션__21.1 익스텐션이란__21.2 익스텐션 문법__21.3 익스텐션으로 추가할 수 있는 기능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.3 약한참조__27.4 미소유참조__27.5 미소유참조와 암시적 추출 옵셔널 프로퍼티__27.6 클로저의 강한참조 순환CHAPTER 28 오류처리__28.1 오류처리란__28.2 오류의 표현__28.3 오류 포착 및 처리CHAPTER 29 메모리 안전__29.1 메모리 접근 충돌의 이해__29.2 입출력 매개변수에서의 메모리 접근 충돌__29.3 메서드 내부에서 self 접근의 충돌__29.4 프로퍼티 접근 중 충돌CHAPTER 30 불명확 타입부록__A. 스위프트의 주요 프로토콜__B. 스위프트의 주요 함수__C. 스위프트의 예약어__D. 디버깅 식별자__E. 컴파일러 제어 구문__F. 사용 가능 조건 확인__G. 속성__H. 타입 별칭 및 호환 타입__I. 알아두면 유용한 타입