HOME > Detail View

Detail View

Swift로 하는 iOS 프로그래밍 (Loan 7 times)

Material type
단행본
Personal Author
Neuburg, Matt 동준상, 역 이지훈, 역
Title Statement
Swift로 하는 iOS 프로그래밍 / 매트 뉴버그 지음 ; 동준상, 이지훈 옮김
Publication, Distribution, etc
의왕 :   에이콘,   2015  
Physical Medium
766 p. : 삽화 ; 26 cm
Series Statement
에이콘 모바일 프로그래밍 시리즈 = Mobile programming series
Varied Title
iOS 8 programming fundamentals with Swift : Swift, Xcode, and Cocoa basics
ISBN
9788960777668 9788960770836 (Set)
General Note
부록: A. C, 오브젝티브C, 그리고 스위프트, B. 한국어판 특별부록: iOS 9 vs. iOS 8 / 동준상  
색인수록  
Subject Added Entry-Topical Term
Mobile computing --Programming Application software --Development
000 00000cam c2200205 c 4500
001 000045852614
005 20151204101744
007 ta
008 151203s2015 ggka 001c kor
020 ▼a 9788960777668 ▼g 94000
020 1 ▼a 9788960770836 (Set)
035 ▼a (KERIS)BIB000013879613
040 ▼a 211019 ▼c 211009 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.268 ▼2 23
085 ▼a 005.268 ▼2 DDCK
090 ▼a 005.268 ▼b 2015z9
100 1 ▼a Neuburg, Matt
245 1 0 ▼a Swift로 하는 iOS 프로그래밍 / ▼d 매트 뉴버그 지음 ; ▼e 동준상, ▼e 이지훈 옮김
246 1 1 ▼a iOS programming fundamentals with Swift
246 1 9 ▼a iOS 8 programming fundamentals with Swift : ▼b Swift, Xcode, and Cocoa basics
260 ▼a 의왕 : ▼b 에이콘, ▼c 2015
300 ▼a 766 p. : ▼b 삽화 ; ▼c 26 cm
440 0 0 ▼a 에이콘 모바일 프로그래밍 시리즈 = ▼x Mobile programming series
500 ▼a 부록: A. C, 오브젝티브C, 그리고 스위프트, B. 한국어판 특별부록: iOS 9 vs. iOS 8 / 동준상
500 ▼a 색인수록
630 0 0 ▼a iOS (Electronic resource)
650 0 ▼a Mobile computing ▼x Programming
650 0 ▼a Application software ▼x Development
700 1 ▼a 동준상, ▼e
700 1 ▼a 이지훈, ▼e
900 1 0 ▼a 뉴버그, 매트, ▼e
945 ▼a KLPA

Holdings Information

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.268 2015z9 Accession No. 121234917 Availability Available Due Date Make a Reservation Service B M

Contents information

Book Introduction

스위프트(Swift) 언어를 이용해서 iOS 애플리케이션을 개발하려는 프로그래머, 오브젝티브C 문법에 익숙한 개발자, 그리고 iOS 인터페이스 구성과 작동 원리, 구현 철학을 이해하려는 UI 디자이너를 위한 iOS 앱 개발 입문서다.

스위프트의 기본 철학과 구현 원리를 소개하고, 아이폰과 아이패드 애플리케이션 개발을 위한 코코아(Cocoa) 프레임워크를 스위프트로 구현하기 위한 방법을 매우 세심하게 설명한다. 또, 스위프트의 강력한 기능인 프로토콜, 제너릭과 코코아 프레임워크의 이벤트 구동형 모델, 애플리케이션 개발의 주요 디자인 패턴, 그리고 핵심 기능을 설명한다.

전체적으로는 iOS 8 버전에 기반을 두고 기술되어있지만, iOS 버전에 구애 받지 않고 오래 참고할 수 있는 기본서로서, iOS 9에서 새로 추가된 기능을 iOS 8과 비교한 '한국어판 특별 부록'도 수록했다.

■ 스위프트의 변수와 함수, 스코프(Scope)와 네임스페이스, 객체 타입과 인스턴스 등을 통해 객체지향형 콘셉트를 소개한다.
■ 스위프트의 숫자, 문자열, 레인지, 튜플, 옵셔널, 어레이, 딕셔너리 등 다양한 데이터 타입에 대해 알아본다.
■ 스위프트 객체 타입인 enum, struct, class를 선언하고 초기화하고 수정하는 방법을 소개한다.
■ 스위프트의 강력한 기능인 프로토콜, 제너릭에 대해 알아본다.
■ 엑스코드(Xcode) 프로젝트의 생성에서부터 앱스토어 제출에 이르기까지 전 과정을 살펴본다.
■ iOS 애플리케이션의 인터페이스 파일인 nib과 nib 편집기인 인터페이스 빌더에 대해 알아본다.
■ 코코아 프레임워크의 이벤트 구동형 모델과 주요 디자인 패턴, 그리고 핵심 기능에 대해 소개한다.
■ 새로운 언어인 스위프트와 기존 코코아 프레임워크에 있는 C, 그리고 오브젝티브C API 간의 소통 방식에 대해 알아본다.


★ 이 책의 구성 ★

iOS 앱을 개발하기 위한 완벽한 기반 지식을 제공하며, iOS 앱 개발에 필요한 세부 행동지침은 물론, 앱 개발의 방향성을 제시하기 위해 노력했다. iOS 프로그래밍 작업을 벽돌을 가지고 집을 짓는 일에 비유하자면, 이 책은 벽돌이 과연 무엇이고, 어떻게 다루어야 할지 설명한다.
이 책을 읽고 나면 스위프트, 엑스코드, 코코아 프레임워크의 구조에 대해 이해하게 될 것이며, 스위프트라는 언어와 UIApplicationMain 함수의 개요, nib 파일 기반의 인터페이스 메커니즘, 코코아의 델리게이션, 노티피케이션, 리테인 사이클에 대한 기반 지식이 부족하다고 느낀다면, 이 책에서 해당 내용에 대한 상세한 설명을 찾을 수 있다.

이 책은 iOS 프로그래밍의 기초를 다지기 위해 필요한 내용을 3개 부로 구성했다.

1부 '스위프트 언어'에서는 프로그래밍 언어를 접해본 적이 없는 독자를 가정해서 스위프트 언어의 기초를 소개한다. 애플의 개발자 문서와는 달리, 체계적, 계통적으로 프로그래밍 언어의 요소를 정리하고 교육학 이론에 입각해 각각의 요소를 결합함으로써 프로그래밍 언어의 기초를 설명한다. 이와 동시에 프로그래밍에 있어 필수적인 내용을 함께 소개한다. 스위프트는 방대한 프로그래밍 언어는 아니지만, 이해하고 있어야 할 미묘한 부분, 지엽적인 부분이 있다. 하지만 지금 당장 이들 내용을 모두 깊이 이해할 필요는 없으며, 이 책에서도 그러한 부분에 대해 상세히 다루지 않는다. 앞으로 프로그래밍을 하면서 이들 지엽적인 요소를 한 번도 써보지 않을 수 있지만, 혹시 이들 요소를 활용해야 할 상황이 된다면 여러분은 이 책에서는 다루지 못한, 깊이 있는 스위프트의 세계로 진입했다고 생각해도 될 듯하다. 바꿔 말하면, 이 책을 무난히 다 읽은 독자라 하더라도 인터넷 등에서 난생 처음 보는 스위프트 코드를 보고 당황할 수 있다는 것이다. 그 이유는 이 책은 iOS 프로그래밍 실용 예제를 소개하는 책이며, 스위프트에 대한 설명 역시 이들 실용 예제를 이해하는 데 필요한 보편적인 내용과 언어의 실용적인 활용법을 중심으로 이뤄지기 때문이다.

2부 'IDE'에서는 사실상 거의 모든 iOS 프로그래밍 작업이 진행되는 엑스코드에 대해 설명한다. 엑스코드 프로젝트의 정의, 앱으로의 변환 방법, 편안하게 엑스코드를 활용하기 위한 문서 참조, 코드 작성, 메뉴 이동, 디버그 방법, 실제 iOS 기기를 통해 앱을 테스트하는 방법, 앱스토어에 앱을 제출하는 방법 등에 대해 소개한다. 또한 인터페이스 구현에 있어 매우 중요한 역할을 하는 nib 파일, nib 편집기인 인터페이스 빌더, 여기서 설정하는 아웃렛(outlet)과 액션, nib 파일의 로딩 방식 등에 대해 설명한다. 단, iOS 인터페이스 개발의 특징 중 하나인 오토레이아웃, 제약에 대한 내용은 기초 수준을 넘어서는 내용이라는 판단에서 이 책에서는 다루지 않는다.

3부 '코코아'에서는 코코아 터치 프레임워크에 대해 설명한다. 코코아 터치 프레임워크는 애플이 만든 iOS 프로그래밍을 위한 유용한 도구의 모음이라 할 수 있다. 코코아는 애플이 만든 여러 프레임워크를 통칭해서 부르는 말이며, iOS 프로그래밍을 위한 전용 API 브랜드가 바로 코코아 터치(Cocoa Touch)다. 개발자가 작성한 코드 대부분은 사실상 이들 코코아 프레임워크 요소와의 상호작용을 위한 것이라 할 수 있다. 코코아 터치 프레임워크는 iOS 앱 구현에 필요한 주요 기능을 제공한다. 프레임워크 사용에 앞서, 개발자는 프레임워크의 작동 방식에 대해 이해할 필요가 있고, 프레임워크가 처리할 수 있는 코드를 작성해야 하며, 프레임워크 활용을 위해 필요한 여러 사항을 빠짐 없이 챙겨줘야 한다. 현 상황에서의 특이점은 코코아는 오브젝티브C라는 언어로 작성됐는데, 여러분은 스위프트라는 언어를 사용한다는 점이며, 이 때문에 스위프트 코드를 통해 코코아의 주요 기능과 작동 방식을 조절할 수 있는 방법을 터득해야 한다. 이 책에서는 코코아가 제공하는 기초 클래스와 카테고리, 프로토콜, 델리게이션, 노티피케이션 등 프로그램의 구조를 이루는 주요 요소를 소개하고, 메모리 관리 기법에 대해서도 설명한다. 아울러 키-값 코딩, 키-값 옵저빙 기법에 대해서도 소개한다.

이 책은 iOS 프로그래머가 갖춰야 할 프로그래밍 기반 지식과 기술을 제공한다. 완벽하게 작동하는 멋진 앱을 만드는 기법을 알려주지는 않지만, iOS 프로그래밍을 하면서 일상적으로 접하게 되는 크고 작은 문제를 해결할 수 있는 방법을 알려준다.

마지막 부록에는 iOS 9의 새로운 기능을 iOS 8과 비교한 한국어판 특별 부록을 수록했다.

★ 지은이의 말 ★

"애플의 새로운 프로그래밍 언어를 소개합니다."

2014년 6월 2일, 애플은 WWDC 키노트 연설이 끝날 무렵 놀라운 뉴스를 전했다. 애플이 새로운 프로그래밍 언어를 만들었다는 소식은 기존의 오브젝티브C 언어에 익숙해진 개발자 커뮤니티에게는 큰 충격으로 다가왔고, 과연 애플이 이미 굳건히 자리를 잡은 언어를 대체할 수 있는 새로운 프로그래밍 언어를 내놓을 수 있을지 의심하는 목소리가 컸다. 하지만 스위프트가 소개되면서 개발자 커뮤니티의 의심은 이내 사라졌다.
새로운 언어의 출현이 실제로 공개되자, 새로운 언어가 과연 어떤 것인지 파악하기 위해 다수의 개발자는 스위프트라 알려진 이 언어를 요모조모 살펴보기 시작했고, 내용 파악, 기능 분석, 적용 가능성 판단 등의 작업을 진행했다. 내가 가장 먼저 한 일은 기존에 오브젝티브C 언어를 사용해서 만들었던 iOS 앱을 스위프트 언어로 바꿔서 구현해보는 것이었다. 그 결과, 스위프트는 새로 iOS 프로그래밍을 접하게 될 개발자가 충분히 믿고 사용할 수 있으며, 이 책을 읽을 많은 독자 역시 유용하게 사용할 수 있는 언어라는 결론을 얻었다.

프로그래밍 언어로서 스위프트는 다음과 같은 개발 철학을 바탕으로 만들어졌다.

객체지향성
스위프트는 현대적이며, 객체지향적인 언어다. '모든 것은 객체다.'라고 표현할 정도로 스위프트는 객체지향적인 언어다.

명료성
스위프트는 읽기 쉽고 쓰기 쉬운 언어이며 최소한의 문법 규칙과 약간의 단축 표현만 알면 사용할 수 있다. 스위프트의 문법은 분명하고, 일관되며, 명시적이다.

안전성
스위프트는 강력한 데이터 타입 지정 방식을 통해 언어 스스로는 물론, 개발자인 여러분, 그리고 해당 데이터를 참조하는 모든 객체가 언제라도 데이터 타입의 유형, 상태 정보를 알 수 있다.

경제성
스위프트는 간소한 언어를 추구하며, 약간의 기본적인 데이터 타입과 핵심 기능 이외의 요소는 포함돼 있지 않다. 프로그래밍에 필요한 다른 요소는 여러분이 작성한 코드와 코코아 등 라이브러리를 통해 가져올 수 있다.

메모리 관리
스위프트는 자동으로 메모리를 관리하므로 개발자인 여러분이 메모리 관리에 신경 쓸 일은 거의 없다.

코코아 호환성
코코아 API는 C와 오브젝티브C 언어로 작성됐으며, 스위프트는 거의 대부분의 코코아 API와 완벽하게 상호작용할 수 있는 언어다.

스위프트가 지닌 이 같은 배경 철학과 핵심 요소는 iOS 프로그래밍을 처음 배우려는 많은 개발자에게 훌륭한 조건이라 할 수 있다.
애플의 애플리케이션 개발에 있어 스위프트 대신 기존의 언어인 오브젝티브C를 사용할 수 있다. 또한 필요하기만 하다면 하나의 앱 개발에 스위프트와 오브젝티브C를 함께 쓰는 것도 가능하다. 오브젝티브C는 코코아 API와 완벽하게 호환되며, 아직 스위프트에서 지원하지 않는 코코아의 C 언어 기반 기능을 사용하기 위해 오브젝티브C 또는 C를 사용해야 할 경우도 있다.
하지만 오브젝티브C에는 스위프트가 제공하는 최신 기능 중 상당수를 제공하지 않는다. 오브젝티브C는 C 언어라는 기본 구조 위에 객체지향적인 기능을 집약한 언어다. 즉 완벽한 객체지향 언어가 아닌, 객체형 데이터 타입과 전통적인 물리적인 데이터 타입을 함께 사용하는 언어이며, 오브젝티브C로 만들어진 객체는 포인터라는 C 언어의 데이터 타입에 넣어서 사용해야 한다. 이 때문에 오브젝티브C의 문법은 배우기 어려우며 코딩 작업 역시 까다롭다는 평이 있다. 여러 번 중첩된 메소드를 계속해서 읽거나 쓰다 보면 어떤 메소드가 어디에서 끝나는지 혼동되기 시작하며, 실수를 피하기 위해 nil 테스트 같은 다소 불필요한 작업을 반복하기도 한다.
타입 체크 기능이 꺼져 있는 경우, 잘못된 객체 타입이라는 오류 메시지가 나타나며, 프로그램의 충돌이 일어난다. 또한 오브젝티브C는 꽤 오랜 기간 동안 개발자가 직접 메모리 관리를 하도록 했으나, 최근엔 ARC(automatic reference counting, 자동 참조 계산) 기법을 도입해서 프로그래머가 메모리 관리에 신경을 못 쓰더라도 오류가 일어날 가능성을 현격히 줄였다. 하지만 여전히 메모리 관리 문제에 따른 오류 가능성이 있고, 이때는 결국 예전에 했던 것처럼 개발자가 직접 메모리 할당과 해제를 해야 한다.
오브젝티브C는 최근 몇 년 사이에 ARC, 합성, 자동 합성 등 새로운 기능을 추가한 것 외에도 리터럴 배열, 딕셔너리 문법, 블록 등 기존 요소도 지속적으로 개선해서 좀 더 이해하기 쉽고 좀 더 편리하게 만들었다. 하지만 이러한 노력이 오히려 언어를 복잡하고 거대하게 만들었으며, 혼란 역시 가중됐다. 오브젝티브C는 C와 완벽하게 호환돼야 하므로 기능 확장과 개선에 한계가 있을 수밖에 없었다. 반면, 스위프트는 여타의 제약 조건 없이 가볍게 출발했다. 오브젝티브C를 완전히 새롭게 개편하고 싶다는 소망이 있었다면, 스위프트가 그 결과라고 할 수 있다. 스위프트는 개발자와 코코아 API를 연결하기 위한 가장 최신의 언어다.

따라서 이 책 전반에 걸쳐 주요 프로그래밍 언어로서 스위프트를 사용하지만, 다음과 같은 두 가지 이유에서 오브젝티브C, 그리고 C에 대한 기본 지식을 갖추고 있을 필요가 있다.

■ iOS 기기와 상호작용하기 위해서는 애플 프로그래밍 파운데이션과 코코아 API를 통해 직접적으로 명령을 내릴 수 있어야 하는데, 이들 요소 모두 오브젝티브C, 그리고 C로 작성됐기 때문이다. 이들 요소와의 원활한 상호작용을 위해서는 오브젝티브C 등 기존의 언어에 대한 사전 지식이 필요한 것이다. 가령, NSArray에 적합한 형태의 배열 객체를 스위프트로 전달하려면 오브젝티브C로 정의된 NSArray의 세부 요소가 어떤 구조인지 이해하고 있어야 한다.

■ 스위프트는 다양한 기능을 갖추고 있지만 오브젝티브C 또는 C를 통해 처리할 수 있는 모든 작업을 대신할 수는 없다. 애플은 엑스코드 6 배포 노트에서 스위프트가 "코코아 터치 프레임워크의 모든 요소에 접근할 수 있고" 장차 "오브젝티브C와 C를 완벽하게 대체할 것"이라고 밝혔으나 스위프트를 통해 코코아 터치 API의 모든 요소와 완벽하게 상호작용할 수 없는 것이 사실이다. 스위프트로는 C 함수를 직접 만들거나 여기서 나온 데이터를 직접 호출할 수 없으며, 오브젝티브C의 @dynamic 프로퍼티를 선언할 수 없는 것이다.

이와 같은 이유로, 이 책에서는 스위프트를 통해 해결할 수 없는 내용은 오브젝티브C를 통해 해결한다. 물론, 이 책은 오브젝티브C 교본은 아니며, 오브젝티브C에 대한 상세한 내용을 알고 싶다면 이 책의 전판을 보길 바란다. 이 책에서는 스위프트를 익히는 과정에서 접하게 될 개발 문서, 인터넷상의 자료를 이해하기 위한 오브젝티브C의 기반 지식을 충실히 다루고 있으며, 책 본문에서도 종종 오브젝티브C 코드를 볼 수 있을 것이다. 6장에서는 스위프트와 오브젝티브C를 적절히 혼합해서 하나의 애플리케이션을 만드는 방법을 소개한다. 특히, 3부 코코아 영역에서는 오브젝티브C에 기초를 둔 코코아 API의 구조와 작동 방식을 제대로 이해할 수 있도록 오브젝티브C 스타일로 생각하는 방법에 대해 소개한다. 그리고 부록에서는 스위프트와 오브젝티브C 코드가 상호작용하기 위한 세부 내용을 설명한다.


Information Provided By: : Aladin

Author Introduction

매트 뉴버그(지은이)

서양고전학 박사로, 다수의 대학에서 강의해왔다. 「맥테크(MacTech)」 매거진의 편집자이자 「TidBITS」의 객원 편집자이며, 다수의 OS X, iOS 애플리케이션 개발 서적을 저술했다. 저서로 『Programming iOS 8』, 『REALbasic: The Definitive Guide』, 『AppleScript: The Definitive Guide』, 『Swift로 하는 iOS 프로그래밍』(에이콘, 2015) 등이 있다.

동준상(옮긴이)

클라우드, 인공지능 부문 강연자이자 컨설턴트이며, AWS 테크놀로지 파트너, 한국생산성본부 인공지능 전문가위원이다. 한국생산성본부, 서울대학교, 삼성전자, 고려대학교, 국가정보자원관리원, 포항공대에서 관련 주제로 강연을 했다. 소프트웨어 엔지니어링과 오픈소스에 관심이 많고 에이콘출판사에서 출간한 『AWS 공인 솔루션스 아키텍트 올인원 스터디 가이드 - 어소시에이트』(2020), 『기업용 블록체인』(2019), 『자바 머신 러닝 마스터』(2019), 『스위프트 데이터 구조와 알고리즘』(2017) 외 십여 권을 번역했다. ■ 웹페이지: http://www.nxp24.com ■ 링크드인: https://www.linkedin.com/in/junsang-dong/

이지훈(옮긴이)

기계공학을 전공했지만 자바 웹 개발을 시작으로 안드로이드/iOS 기반의 앱을 개발했으며, 최근 몇 년간은 하둡과 스파크 및 딥러닝에 관련된 소프트웨어를 개발해왔다. 또한 IT 관련 서적의 저자 및 번역가로도 활동한다. 『나홀로 개발자를 위한 안드로이드』(에이콘, 2013), 『Java 프로그래밍 입문』(북스홀릭퍼블리싱, 2013)을 저술했고, 『프로그래머를 위한 안드로이드』(정보문화사, 2015), 『Android Internals Vol.1』(에이콘, 2016), 『스위프트로 하는 iOS 9 프로그래밍』(에이콘, 2016), 『대용량 머신 러닝과 스파크』(에이콘, 2018) 등 수십 권의 책을 번역했다.

Information Provided By: : Aladin

Table of Contents

1부 스위프트 언어 
1장 스위프트 아키텍처 
__프로그래밍 기초 
__모든 것은 객체인가 
__세 가지 객체 타입 
__변수 
__함수 
__스위프트의 파일 구조 
__유효 범위와 생애주기 
__객체 멤버 
__네임스페이스 
__모듈 
__인스턴스 
__인스턴스를 사용하는 이유 
__self 
__객체 내부 정보의 보안 
__디자인 전략 
____객체 타입과 API 
____인스턴스의 생성, 유효 범위, 생애주기 
____정리, 그리고 결론 

2장 함수 
__함수의 파라미터와 반환 값 
____Void 리턴 타입과 파라미터 
____함수 서명 
__외부 파라미터 이름 
__오버로딩 
__기본 설정 파라미터 값 
__다수의 인수를 지니는 파라미터 
__무시되는 파라미터 
__수정 가능 파라미터 
__함수 안의 함수 
__재귀 
__값으로서의 함수 
__익명 함수 
__함수 정의와 호출 
__클로저 
____클로저를 통한 코드의 개선 
____함수를 반환하는 함수 
____변수 값을 유지하기 위한 클로저 
____함수의 내용을 유지하기 위한 클로저 
____커리 함수 

3장 변수와 데이터 타입 
__변수의 유효 범위와 생애주기 
__변수 선언 
__컴퓨터 연산에 의한 초기화 
__컴퓨터 연산에 의한 변수 생성 
__세터 옵저버 
__지연 초기화 
__내장된 변수 타입 
____불 타입 데이터 
____숫자 데이터 타입 
____스트링 
____캐릭터 
____레인지 
____튜플 
____옵셔널 

4장 객체 타입 
__객체 타입의 선언 방식과 타입별 특징 
____초기화 함수 
____프로퍼티 
____메소드 
____서브스크립트 
____네임스페이스 객체 타입 
____인스턴스 레퍼런스 
__열거형 
____고정 값 있는 케이스 문 
____타입이 있는 케이스문 
____Enum 초기화 함수 
____Enum 프로퍼티 
____Enum 메소드 
____Enum을 사용하는 이유 
__구조체 
____Struct 초기화 함수, 프로퍼티, 메소드 
____네임스페이스로서의 Struct 
__클래스 
____밸류 타입, 레퍼런스 타입 
____서브클래스와 수퍼클래스 
____클래스 초기화 함수 
____클래스 초기화 해제 함수 
____클래스 프로퍼티와 메소드 
__다형성 
__캐스팅 
__타입 레퍼런스 
__프로토콜 
____프로토콜을 사용하는 이유 
____프로토콜 타입 확인과 캐스팅 
____프로토콜 선언하기 
____옵셔널 프로토콜 멤버 
____클래스 프로토콜 
____암묵적인 필수 초기화 함수 
____리터럴 컨버터블 
__제네릭 
____제네릭 선언하기 
____타입 제약 
____명시적인 특정화 
____where절 
__익스텐션 
__엄브렐러 타입 
____애니오브젝트 
____애니클래스 
____애니 
__컬렉션 타입 
____배열 
____딕셔너리 
____세트 

5장 플로우 콘트롤, 프라이버시, 메모리 관리 
__플로우 콘트롤 
____브랜칭 
____루프 조건문 
____조건문 건너뛰기 
____프로그램의 중지 
__연산자 
__프라이버시 
____프라이빗 선언 
____퍼블릭 선언 
____프라이버시 규칙 
__내적 관찰 
__메모리 관리 
____weak 레퍼런스 
____unowned 레퍼런스 
____익명 함수의 weak, unowned 레퍼런스 
____프로토콜 타입 레퍼런스의 메모리 관리 

2부 IDE 
6장 엑스코드 프로젝트의 구조 
__새로운 프로젝트 
__프로젝트 윈도우 
____내비게이터 창 
____유틸리티 창 
__에디터 
__프로젝트 파일과 관련된 파일 
__타깃 
____빌드 단계 
____빌드 설정 
____환경 설정 
____스키마와 데스티네이션 
__프로젝트에서 앱 실행까지 
____빌드 설정 
____프로퍼티 리스트 설정 
____닙 파일 
____추가 리소스 
____코드 파일과 앱 시작 프로세스 
____프레임워크와 SDK 
__프로젝트 내 항목에 대한 이름 변경 
__다중 언어 타깃 

7장 닙 관리 
__닙 에디터 인터페이스 살펴보기 
____도큐먼트 아웃라인 
____캔버스 
____인스펙터와 라이브러리 
__닙 로딩 
____닙 파일이 로딩되는 시점 
____수작업 닙 로딩 
__커넥션 
____아웃렛 
____닙 오너 
____자동적으로 설정된 닙 
____잘못 설정된 아웃렛 
____아웃렛 삭제 
____아웃렛을 만들기 위한 다른 방법들 
____아웃렛 콜렉션 
____액션 연결 
____액션을 생성하는 다른 방법들 
____잘못 구성된 액션 
____닙 간의 연결: 불가능 
__닙 기반 인스턴스의 추가 설정 

7장 도큐멘테이션 
__도큐멘테이션 윈도우 
__클래스 도큐멘테이션 페이지 
__샘플 코드 
__퀵 헬프 
__심볼 
__헤더 파일 
__인터넷 리소스 

9장 프로젝트 생명주기 
__디바이스 아키텍처와 조건부 코드 
____이전 버전과의 호환성 
____디바이스 타입 
__버전 관리 
__코드 편집과 탐색 
____자동 완성 
____코드 스니핏 
____Fix-it 기능과 라이브 구문 검사 
____내비게이션 
____찾기 
__시뮬레이터에서 실행하기 
__디버깅 
____케이브맨 디버깅 기술 
____엑스코드 디버거 
__단위 테스트 
__클린 
__디바이스에서 실행하기 
____인증서 획득 
____개발 프로비저닝 프로파일 얻기 
____앱 실행 
____프로파일과 디바이스 관리 
__프로파일링 
____게이지 
____인스트루먼트 
__지역화 
____Info.plist 파일 지역화 
____닙 파일 지역화 
____코드 문자열의 지역화 
____XML 파일 지역화 
__아카이빙 및 배포 
__애드혹 배포 
__앱 배포를 위한 마지막 준비사항 
____앱에서 필요한 아이콘 
____다른 아이콘 
____런치 이미지 
____스크린샷과 비디오 프리뷰 
____프로퍼티 리스트 세팅 
__앱스토어에 제출 

3부 코코아 
10장 코코아 클래스 
__서브클래스화 
__카테고리와 익스텐션 
____스위프트에서 익스텐션을 사용하는 방법 
____익스텐션을 사용하는 방법 
____코코아에서 카테고리를 사용하는 방법 
__프로토콜 
____인포멀 프로토콜 
____옵셔널 메소드 
__파운데이션 클래스 
____유용한 구조체와 상수 
____NSString과 관련 클래스 
____NSDate와 관련 메소드 
____NSNumber 
____NSValue 
____NSData 
____동등과 비교 
____NSIndexSet 
____NSArray와 NSMutableArray 
____NSDictionary와 NSMutableDictionary 
____NSSet과 관련 메소드 
____NSNull 
____불변 객체과 가변 객체 
____프로퍼티 리스트 
__접근자, 속성, 키-밸류 코딩 
____스위프트 접근자 
____키-밸류 코딩 
____키-밸류 코딩 사용하기 
____KVC와 아웃렛 
____키 패스 
____배열 접근자 
__NSObject의 비밀 

11장 코코아 이벤트 
__이벤트를 받는 이유 
__서브클래싱 
__노티피케이션 
____노티피케이션 수신 
____등록 취소 
____노티피케이션 게시 
____NSTimer 
__델리게이션 
____코코아 델리게이션 
____델리게이션 구현 
__데이터 소스 
__액션 
__리스폰더 체인 
____책임 전가 
____닐에 타깃된 액션 
__키-밸류 옵저빙 
__쇄도하는 이벤트 
__지연 성능 

12장 메모리 관리 
__코코아 메모리 관리 법칙 
__코코아 메모리 관리 규칙 
__ARC와 ARC가 하는 일 
__코코아 오브젝트가 메모리를 관리하는 방법 
__오토릴리스 풀 
__인스턴스 프로퍼티에서 메모리 관리 
__리테인 사이클과 위크 레퍼런스 
__비정상적인 메모리 관리 상황 
__닙 로딩과 메모리 관리 
__CFTypeRef의 메모리 관리 
__프로퍼티 메모리 관리 정책 
__메모리 관리 실수 디버깅 

13장 오브젝트 간 통신 
__인스턴스화의 가시성 
__관계에 의한 가시성 
__글로벌 가시성 
__노티피케이션과 KVO 
__모델-뷰-컨트롤러 

부록. C, 오브젝티브C, 그리고 스위프트 
한국어판 특별 부록, iOS 9 vs iOS 8

New Arrivals Books in Related Fields

Ramamurthy, Bina (2021)