핵심을 정리한 Swift 3 [기본 문법부터 옵셔널, 클로저, 동시성과 병렬성까지]
- 원서명Mastering Swift 3 (ISBN 9781786466129)
- 지은이존 호프만(Jon Hoffman)
- 옮긴이권석기
- ISBN : 9788960779945
- 30,000원
- 2017년 04월 28일 펴냄 (절판)
- 페이퍼백 | 440쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
스위프트 3의 전반적인 기능을 설명하고 반드시 알아야 할 내용을 요약해서 정리한 책이다.
적절하고 풍부한 예제들을 곁들어 이해를 돕고 있으며, 처음에는 누구에게나 생소할 수 있는 옵셔널과 클로저 부분도 잘 설명한다.
이 책에서 다루는 내용
■ 연산자와 컬렉션, 흐름 제어, 함수를 포함한 스위프트 3의 핵심 요소
■ 클래스와 구조체, 열거형 생성법
■ 객체 지향 스위프트에 대한 이해와 상속, 프로토콜, 익스텐션 사용법
■ 서브스크립트와 옵셔널, 클로저 이해에 기반한 실용적 개발법
■ 스위프트 3의 신기능인 프로토콜 확장과 에러 처리 사용법
■ Grand Central Dispatch를 사용한 동시성 추가
이 책의 대상 독자
최신 스위프트 버전을 배우고자 하는 개발자를 위한 책이다. 읽고 코딩하면서 배우는 것에 익숙하다면 이 책은 당신을 위한 책이다. 애플 툴에 대한 기본적인 이해가 있다면 도움이 되지만 필수 사항은 아니다.
이 책의 구성
1장, ‘스위프트 소개’에서는 스위프트 프로그래밍을 실험해볼 수 있는 플레이그라운드 실행 방법과 사용법을 알아본다. 기본적인 스위프트 언어의 문법과 적절한 스타일에 대해서도 다룬다.
2장, ‘변수, 상수, 스트링, 연산자’에서는 변수와 상수 사용법을 알아본다. 스위프트의 여러 가지 데이터 타입과 연산자 사용법도 다룬다.
3장, ‘스위프트 컬렉션 및 큐플 타입’에서는 관련 데이터를 저장하기 위해 컬렉션 타입 사용법을 배운다. 컬렉션에는 딕셔너리와 배열이 있다. 스위프트에서 코코아(Cocoa)와 파운데이션(Foundation) 사용법도 살펴본다.
4장, ‘흐름 제어와 함수’에서는 흐름 제어법과 함수에 대해 배운다. 앞으로의 내용을 이해하려면 4장의 개념을 확실히 이해해야 한다. 간단한 Hello World 예제가 목표는 아니다. 이후 작성할 모든 애플리케이션은 흐름 제어문과 함수에 크게 의존한다.
5장, ‘클래스와 구조체’에서는 클래스와 구조체를 비슷하게 혹은 차이가 나게 만드는 것이 무엇인지 알아본다. 또한 접근제어와 객체지향 디자인에 대해서도 살펴본다. 마지막으로 스위프트의 메모리 관리에 대해 다룬다.
6장, ‘프로토콜과 프로토콜 확장’에서는 프로토콜과 프로토콜 확장을 자세히 다룬다. 스위프트에서는 프로토콜 관련 개념이 매우 중요하기 때문에, 확실히 이해하면 유연하고 재사용할 수 있는 코드를 작성하는 데 도움이 된다.
7장, ‘프로토콜 지향 디자인’에서는 스위프트로 작성하는 프로토콜 지향 디자인 모범 사례를 배운다. 내가 저술한 『스위프트와 프로토콜지향 프로그래밍』(에이콘, 2016)도 간략히 소개한다.
8장, ‘Availability와 에러 처리를 통한 안전한 코드’에서는 스위프트의 에러 처리 기능을 다룬다. 이는 안전한 코드를 작성하기 위해 매우 중요한 부분이다. 에러를 처리하고 대응할 때는 일관된 방식이 중요하다. 단 사용자 타입(custom types)에서는 이 기능을 반드시 사용하지 않아도 된다. 애플 역시 자체 프레임워크에서 에러 처리 기능을 사용하기 시작했다. 여러분의 코드에서도 에러 처리를 사용하는 것을 강력히 추천한다.
9장, ‘사용자 정의 서브 스크립팅’에서는 클래스, 구조체, 열거 문법에서의 사용자 정의 서브스크립트(Custom Subscripting) 사용법을 배운다. 서브스크립트를 사용하면 컬렉션에 포함된 요소들을 액세스할 수도 있다.
10장, ‘옵셔널 타입’에서는 옵셔널의 정의와 옵셔널을 벗기는 방법, 옵셔널 체이닝에 대해 배운다. 초보 스위프트 개발자가 처음 만나게 될 가장 혼란스러운 개념 중 하나가 바로 이 옵셔널일 것이다.
11장, ‘제네릭’에서는 제네릭 사용법을 배운다. 제네릭을 사용하면 코드 중복을 피하면서도 유연하고 재사용 가능한 코드를 작성할 수 있다.
12장, ‘클로저’에서는 코드에서 클로저를 정의하고 사용하는 방법을 배운다. 스위프트의 클로저는 오브젝티브C의 블록과 비슷하지만 훨씬 깔끔하고 문법이 쉽다. 클로저 사용 시 강한 참조 사이클을 피하는 방법도 다룬다.
13장, ‘믹스 앤 매치’에서는 믹스 앤 매치(Mix and Match)에 대해 설명하고 오브젝티브C 프로젝트에 스위프트를 포함하는 방법과 그 반대의 경우에 대해서도 설명한다. 오브젝티브C로 작성된 모든 앱과 프레임워크에서 스위프트와 오브젝티브C를 함께 사용하는 것은 매우 중요한 부분이다.
14장, ‘동시성과 병렬성’에서는 Grand Central Dispatch와 Operation Queue를 사용해 애플리케이션에 동시성 및 병렬 처리 기능을 추가하는 방법을 살펴본다. 앱에 동시성 및 병렬성을 추가하면 사용자 경험이 크게 향상된다.
15장, ‘스위프트 포맷과 스타일 가이드’에서는 스위프트 언어 스타일 가이드 정의 및 사용법을 살펴본다. 스타일 가이드가 필요한 엔터프라이즈 개발자를 위한 템플릿을 만드는 데 도움이 될 것이다. 대부분의 기업은 자체 개발한 다양한 언어에 대한 스타일 지침을 가지고 있기 때문이다.
16장, ‘코어 라이브러리’에서는 파일 읽고 쓰기 및 네트워크 기본 요소, JSON 파싱을 포함하는 라이브러리에 대해 설명한다.
17장, ‘스위프트 디자인 패턴’에서는 스위프트에서 구현하는 좀 더 일반적인 디자인 패턴을 설명한다. 디자인 패턴은 일반적인 소프트웨어 개발 문제점을 파악하고 이에 대한 대처법을 제공한다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1장. 스위프트 첫걸음
- 스위프트란
- 스위프트 기능
- Playgrounds
- Playgrounds 시작
- iOS와 OS X Playgrounds
- Playground에서 이미지 사용
- Playground에서 그래프 표시하기
- Playground를 사용하면 안 되는 경우
- 스위프트 언어 문법
- 주석
- 세미콜론
- 괄호
- 제어문에 대한 중괄호
- 대입 연산자는 값을 반환하지 않는다
- 조건문과 대입문에서 공백은 선택사항이다
- Hello World
- 요약
- 스위프트란
- 2장. 변수와 상수, 문자열, 연산자
- 변수와 상수
- 상수와 변수 선언하기
- 타입 안전
- 타입 추론
- 명시적 타입
- 숫자 타입
- 정수 타입
- 부동 소수점 타입
- 불린 타입
- String 타입
- 옵셔널 변수
- 열거형
- 연산자
- 할당 연산자
- 비교연산자
- 산술연산자
- 나머지 연산자
- 복합 할당 연산자
- 삼항 조건 연산자
- 논리 NOT 연산자
- 논리 AND 연산자
- 논리 OR 연산자
- 요약
- 변수와 상수
- 3장. 스위프트 컬렉션과 튜플
- 스위프트 컬렉션 타입
- 가변성
- 배열
- 배열 생성과 초기화
- 배열 요소 액세스
- 배열 카운트하기
- 빈 배열 검사
- 배열 요소 추가
- 배열 요소 삽입
- 배열요소 교체
- 배열요소 제거
- 두 배열 합치기
- 배열 뒤집기
- 배열에서 서브배열 검색
- 배열 요소 한꺼번에 변경하기
- 배열 알고리즘
- Sort
- Sorted
- Filter
- Map
- forEach
- 배열 순회
- 딕셔너리
- 딕셔너리의 생성및 초기화
- 딕셔너리 값 액세스
- 딕셔너리의 키/값 카운팅
- 빈 딕셔너리
- 키-값 업데이트
- 키-값 쌍 추가
- 키-값 쌍 제거
- 집합
- 집합 초기화
- 집합에 항목 삽입
- 집합의 항목 개수
- 집합의 항목포함 여부 체크
- 집합 순회
- 집합에서 항목 제거
- 집합 연산
- 튜플
- 요약
- 4장. 흐름제어와 함수
- 여기까지 배운 것들
- 중괄호
- 괄호
- 흐름제어
- 조건 구문
- if 문
- if-else 문을 사용한 조건 코드 실행
- for 구문
- for-in 문 사용
- while 루프
- while 루프 사용하기
- repeat-while 루프 사용
- switch 구문
- 조건문에서의 case와 where 구문
- where 문으로 필터링하기
- for-case 문으로 필터링하기
- if-case 문
- 제어이동 명령
- continue 문
- break 문
- fallthrough 문
- guard 문
- 조건 구문
- 함수
- 함수 파라미터
- 멀티-파라미터 함수
- 파라미터 기본값
- 멀티 밸류 반환 함수
- 옵셔널 값 반환
- 외부 파라미터명 추가
- 가변 파라미터 사용
- Inout 파라미터
- 네스팅 함수
- 종합 예제
- 요약
- 여기까지 배운 것들
- 5장. 클래스와 구조체
- 클래스와 구조체란
- 클래스와 구조체의 유사점
- 클래스와 구조체의 차이점
- 값 vs 참조타입
- 클래스 및 구조체 생성
- 프로퍼티
- 저장 프로퍼티
- 연산 프로퍼티
- 프로퍼티옵저버
- 메소드
- 커스텀 이니셜라이저
- 내부와 외부 파라미터 이름
- 실패가능-이니셜라이저
- 상속
- 메소드와 프로퍼티 오버라이딩
- 메소드 오버라이딩
- 프로퍼티 오버라이딩
- 오버라이드 방지
- 프로토콜
- 프로토콜 문법
- 프로퍼티 요구사항
- 메소드 요구사항
- 익스텐션
- 메모리 관리
- ARC 작동 방식
- 강한 참조 순환
- 요약
- 클래스와 구조체란
- 6장. 프로토콜과 프로토콜 확장
- 타입으로써의 프로토콜
- 프로토콜의 다형성
- 프로토콜과 타입 캐스팅
- 프로토콜 확장
- 요약
- 7장. 프로토콜 지향 설계
- 요구사항
- 객체지향 설계
- 프로토콜 지향 설계
- 프로토콜 상속
- 프로토콜 컴포지션
- Animal-프로토콜 지향 설계
- 프로토콜과 where구문
- 요약
- 8장. Availability와 에러 처리를 이용한 안전한 코드 작성
- 스위프트 2.0 이전까지의 에러 처리
- 네이티브 에러 처리
- 에러 표현
- 에러 던지기
- 에러 잡기
- availability 속성
- 요약
- 9장. 서브스크립팅
- 서브스크립트 소개
- 스위프트 배열 서브스크립트
- 서브스크립트 읽고 쓰기
- 읽기전용 커스텀 서브스크립트
- 연산 서브스크립트
- 서브스크립트 값
- 서브스크립트 외부이름
- 다차원 서브스크립트
- 서브스크립트를 쓰지 않아야 하는 경우
- 요약
- 10장. 옵셔널 타입
- 옵셔널 소개
- 옵셔널을 사용하는 이유
- 옵셔널 선언
- 옵셔널 사용
- 옵셔널 강제 언래핑
- 옵셔널 바인딩
- 함수와 메소드, 서브스크립트의 반환 값으로 사용하는 옵셔널
- 옵셔널을 함수나 메소드의 파라미터로 사용하기
- guard 문을 사용한 옵셔널 바인딩
- 튜플과 옵셔널 타입
- 옵셔널 체이닝
- nil 병합 연산자
- 요약
- 11장. 제너릭
- 제너릭 소개
- 제너릭 함수
- 제너릭 타입
- 연관타입
- 제너릭을 쓰지 말아야 할 경우
- 요약
- 12장. 클로저
- 클로저소개
- 간단한 클로저
- 클로저 간편문법
- 스위프트 배열 알고리즘과 함께 사용하는 클로저
- 스탠드얼론 클로저(Standalone closure)와 모범 스타일 가이드라인
- 기능 변경
- 결과에 따른 클로저 선택
- 강한 참조사이클 생성
- 요약
- 13장. 믹스 앤 매치 사용법
- 믹스 앤 매치란?
- 믹스 앤 매치 적용 사례
- 동일 프로젝트 내에 스위프트와 오브젝티브C 함께 쓰기
- project 생성
- 오브젝티브C 프로젝트에 스위프트 파일 추가
- 오브젝티브C 브릿징 헤더 파일 – part 1
- 프로젝트에 오브젝티브C 파일 추가하기
- Messages 클래스 (오브젝티브C)
- 오브젝티브C 브릿징 헤더 파일 – part 2
- MessageBuilder 스위프트 클래스 - 스위프트에서 오브젝티브C 코드 액세스하기
- 오브젝티브C 클래스 – 오브젝티브C에서 스위프트 코드에서 액세스하기
- 요약
- 14장. 동시성과 병렬성
- 스위프트에서 동시성과 병렬성
- Grand Central Dispatch
- Calculation 타입
- 큐 생성
- async vs sync
- 메인큐 함수에서 코드 실행
- asyncAfter 사용
- Operation과 OperationQueue 타입 사용
- BlockOperation 사용
- 오퍼레이션 큐의 addOperation() 메소드 사용
- 오퍼레이션 클래스 서브클래싱
- 요약
- 스위프트에서 동시성과 병렬성
- 15장. 스위프트 포맷과 스타일가이드
- 프로그래밍 스타일가이드란?
- 자신만의 코딩스타일
- 구문 끝에 세미콜론을 쓰지마라
- 조건문에 중괄호를 뺀다
- 이름짓기
- 커스텀 타입
- 함수와 메소드
- 상수와 변수
- 들여쓰기
- 주석
- self 키워드
- 상수와 변수
- 옵셔널 타입
- 옵셔널 바인딩
- 옵셔널 바인딩을 사용한 다중 언래핑 대신 옵셔널 체인 사용하기
- 타입추론 사용
- 컬렉션 간편선언
- 다중if 문 대신 switch을 사용하라
- 주석처리된 코드를 그대로 두지마라
- 요약
- 16장. 스위프트 코어 라이브러리
- 애플 URL 로딩 시스템
- URLSession
- URLSessionConfiguration
- URLSessionTask
- URL
- URLRequest
- HTTPURLResponse
- REST 웹 서비스
- HTTP GET 요청 만들기
- HTTP POST 요청 만들기
- Formatter
- DateFormatter
- NumberFormatter
- FileManager
- JSONSerialization
- JSON 문서 파싱
- JSON 문서 생성
- 요약
- 애플 URL 로딩 시스템
- 17장. 스위프트의 디자인 패턴
- 디자인 패턴이란?
- 생성 패턴
- 싱글턴 디자인 패턴
- 문제점 이해
- 해결책 이해
- 싱글턴 구현
- 빌더 디자인 패턴
- 문제점 이해
- 해결책 이해
- 빌더 패턴 구현
- 싱글턴 디자인 패턴
- 구조 디자인 패턴
- 브리지 패턴
- 문제점 이해
- 해결책 이해
- 브리지 패턴 구현
- 파사드 패턴
- 문제점 이해
- 해결책 이해
- 파사드 패턴 구현
- 프락시 디자인 패턴
- 문제점 이해
- 해결책 이해
- 프락시 패턴 구현
- 브리지 패턴
- 행위 디자인 패턴
- 커맨드 디자인 패턴
- 문제점 이해
- 해결책 이해
- 커맨드 패턴 구현
- 스트래티지 패턴
- 문제점 이해
- 해결책 이해
- 스트래티지 패턴 구현
- 커맨드 디자인 패턴