오브젝티브-C의 정석
Description
『오브젝티브-C의 정석』은 iPhone를 위한 고유의 앱을 구축하는 과정을 통하여 Objective-C 코드 첫 번째 줄부터 점차적으로 안내한다. 1장을 시작하면서 즉시 실행할 수 있는 간단한 게임을 개발하며 iPhone 개발에 뛰어들게 된다. XCode 4와 디버거를 사용하면서 독자가 보다 유능한 개발자가 되도록 도와준다. 쉽게 따라할 수 있는 수많은 예제를 이용하여 작업함으로써 더 견고하고 안정적으로 애플리케이션을 개발하는 데 사용할 수 있는 실용적인 기술과 패턴을 배울 수 있으며, 가장 일반적인 장애물을 피할 수 있는 방법을 찾을 수 있다.
저자

Christopher K. Fairbairn

목차

1부 Objective-C 시작하기

1장 첫 번째 iOS 애플리케이션 만들기

1.1 iSO 개발 도구 소개 3
1.1.1 모바일 장치를 위한 Cocoa 프레임워크의 적용 3
1.2 개발 시 제한사항 5
1.2.1 하드웨어 사양 요약(2010년 중반) 5
1.2.2 인터넷 연결 6
1.3 XCode를 사용한 간단한 동전 던지기 게임 만들기 7
1.3.1 Apple의 IDE-XCode 소개 8
1.3.2 간단한 XCode Launching 8
1.3.3 프로젝트 생성 9
1.3.4 소스코드 쓰기 14
1.4 사용자 인터페이스 연결 18
1.4.1 뷰에 컨트롤 추가하기 19
1.4.2 소스코드와 컨트롤 연결하기 21
1.5 동전 던지기 게임 컴파일 26
1.6 동전던지기 게임 테스트 실행 27
1.6.1 테스트 환경 선택 27
1.6.2실행중인 애플리케이션의 상태를 확인을 위한 중단점 이용하기 28
1.6.3 iPhone 시뮬레이터에서 동전 던지기 게임 실행하기 29
1.6.4 디버거 제어하기 30
1.7 정리 33

2장 데이터 형, 변수 그리고 상수
2.1 Rental Manager 애플리케이션 소개 34
2.1.1 기초 확립하기 35
2.2 기본 데이터 형 39
2.2.1 손가락 수 세기 ? 진정수(integral number) 39
2.2.2 틈새 채우기 ? 부동소수점 숫자 43
2.2.3 문자형과 문자열 45
2.2.4 부울 진리(Boolean truths) 48
2.3. 값의 표시와 변환 49
2.3.1 NSLog과 포맷 지정자 50
2.3.2 데이터 형 캐스트와 데이터 형 변환 52
2.4 사용자 정의 데이터 형 만들기 54
2.4.1 열거자 55
2.4.2 구조체 57
2.4.3 배열 59
2.4.4 서술적 이름의 중요성 62
2.5 Rental Manager v1.0 완성하기, 앱 스토어 기다려! 64
2.6 정리 67

3장 객체 소개
3.1 객체지향 프로그래밍 개념 둘러보기 69
3.1.1 C와 같은 절차기반 언어에는 무슨 문제가 있는가? 70
3.1.2 객체란 무엇인가? 70
3.1.3 클래스란 무엇인가? 71
3.1.4 상속과 다형성 71
3.2 사라진 데이터 형: id 73
3.3 포인터와 참조, 값 유형 간의 차이점 74
3.3.1 메모리 맵(Memory map) 74
3.3.2 변수의 주소를 얻는 법 75
3.3.3 포인터 따라가기 76
3.3.4 포인터의 값 비교하기 77
3.4 객체와 통신하기 78
3.4.1 객체에 메시지 전달하기 78
3.4.2 클래스에 메시지 전달하기 79
3.4.3 존재하지 않는 메시지 전달하기 80
3.4.4 nil에 메시지 전달하기 82
3.5 문자열 83
3.5.1 문자열 구성하기 83
3.5.2 문자열에서 문자 추출하기 85
3.5.3 문자열 수정하기 86
3.5.4 문자열 비교하기 87
3.6 예제 애플리케이션 88
3.7 정리 92

4장 컬렉션에 데이터 저장하기
4.1 배열 93
4.1.1 배열 구축하기 94
4.1.2 배열 원소에 접근하기 96
4.1.3 배열 원소 찾기 97
4.1.4 배열 반복하기 99
4.1.5 배열에 항목 추가하기 101
4.2 딕셔녀리(Dictionary) 104
4.2.1 딕셔너리 구축하기 104
4.2.2 딕셔너리 엔트리 접근하기 106
4.2.3 키/값 쌍 추가하기 107
4.2.4 모든 키와 값 열거하기 109
4.3 Boxing 112
4.3.1 NSNumber 클래스 113
4.3.2 NSValue 클래스 114
4.3.3. nil 대 NULL 대 NSNull 115
4.4 Rental Manager 애플리케이션의 데이터 구동 만들기 116
4.5 정리 120


2부 사용자 정의 객체 생성하기

5장 클래스 생성하기

5.1 사용자 정의 클래스 만들기 123
5.1.1 프로젝트에 새로운 클래스 파일 추가 123
5.2 클래스의 인터페이스를 선언하기 124
5.2.1 인스턴스 변수(ivars) 126
5.2.2 메서드 선언 128
5.2.3 CTRentalProperty 클래스를 위한 헤더파일 구체화하기 132
5.3 클래스를 위한 구현 제공하기 133
5.3.1 메서드 구현 정의하기 134
5.3.2 인스턴스 변수에 접근하기 134
5.3.3 self에게 메시지 보내기 135
5.3.4 CTRentalProperty 클래스에 메서드 파일 구체화하기 136
5.4 선언된 프로퍼티 138
5.4.1 @property 구문 138
5.4.2 프로퍼티의 getter와 setter 통합하기 142
5.4.3 점(.) 구문 144
5.5 객체 생성하기와 파괴하기 146
5.5.1 객체 생성하기와 초기화하기 146
5.5.2 init은 멍청하다 148
5.5.3 선언과 초기화 결합하기 150
5.5.4 객체 파괴하기 151
5.6 Rental Manager application에서 클래스 사용하기 153
5.7 요약 157

6장 클래스 확장하기
6.1 서브클래싱 159
6.1.1 서브클래싱이란? 160
6.2 새로운 인스턴스 변수 추가하기 162
6.3 존재하는 인스턴스 변수에 접근하기 166
6.3.1 수동 Getter와 setter 접근 167
6.4 메서드 오버라이드하기 169
6.4.1 description 메서드 오버라이드 170
6.5 클래스 클러스터 173
6.5.1 왜 클래스 클러스터를 이용하는가? 173
6.5.2 다중 public 클러스터 174
6.6 카테고리 175
6.6.1 서브클래싱 없이 클래스 확장하기 175
6.6.2 카테고리 사용하기 175
6.6.3 카테고리 사용 시 고려할 점 177
6.7 예제 애플리케이션에서 서브클래스 적용하기 179
6.7.1 CTLease를 생성하고 서브클래싱하기 179
6.7.2 CTLease의 서브클래스 CTPeriodicLease 생성하기 181
6.7.3 CTLease의 서브클래스 CTFixedLease 생성하기 183
6.8 요약 184

7장 프로토콜(Protocol)
7.1 프로토콜 선언 187
7.2 프로토콜의 구현 189
7.2.1 프로토콜 메서드 호출자 생성 189
7.2.2 프로토콜을 적용하는 클래스 생성 191
7.3 프로토콜의 주요 메서드 194
7.3.1 〈UITableViewDataSource〉 194
7.3.2 〈UITableViewDelegate〉 199
7.3.3 〈UIActionSheetDelegate〉 203
7.3.4 NSXMLParser 204
7.4 요약 210

8장 동적 유형 정의와 런타임 유형 정
8.1 정적 VS 동적 유형 정의 212
8.1.1 런타임 유형에 대한 가정 생성 213
8.2 동적 바인딩 214
8.3 어떻게 메시징이 작동하는가 215
8.3.1 메서드, 선택자 그리고 구현 217
8.3.2 알려지지 않은 선택자를 다루기 218
8.3.3 Nil에 메시지 보내기 221
8.4 런타임 유형 정보 221
8.4.1 메시지가 메시지에 응답 하는 것을 결정하기 222
8.4.2 런타임에 생성된 메시지 보내기 222
8.4.3 런타임 시 클래스에 새로운 메서드 더하기 224
8.5 런타임 유형의 실제 사용 226
8.6 요약 229

9장 메모리 관리
9.1 객체 소유권 231
9.2 참조 횟수 232
9.2.1 객체 해제 234
9.2.2 객체 보유 235
9.2.3 현재의 보유 횟수 결정하기 236
9.3 자동 해제 풀 239
9.3.1 자동 해제 풀이란? 240
9.3.2 자동 해제 풀에 객체 더하기 241
9.3.3 새로운 자동 해제 풀 만들기 241
9.3.4 풀에 있는 객체 해제하기 243
9.3.5 왜 모든 것에서 자동 해제 풀을 사용하지 않는가? 243
9.4 메모리 존 247
9.5 객체 소유권을 위한 규칙 250
9.6 메모리 부족 경고에 응답하기 251
9.6.1 UIApplicationDelegate 프로토콜의 구현 252
9.6.2 didReceiveMemoryWarning 오버라이딩 253
9.6.3 UI 애플리케이션 DidReveiveMemoryWarningNotification 관찰하기 257
9.7 요약 260

3부 프레임워크 기능 최대한 사용하기

10장 오류와 예외 처리

10.1 NSError - Cocoa 방식의 오류 처리 262
10.1.1 대화하기 위하여 NSError 얻기 264
10.1.2 NSError의 userInfo 딕셔너리 알아보기 264

출판사 서평

[오브젝티브-C의 정석]은 iPhone를 위한 고유의 앱을 구축하는 과정을 통하여 Objective-C 코드 첫 번째 줄부터 점차적으로 안내한다. 1장을 시작하면서 즉시 실행할 수 있는 간단한 게임을 개발하며 iPhone 개발에 뛰어들게 된다. XCode 4와 디버거를 사용하면서 독자가 보다 유능한 개발자가 되도록 도와준다. 쉽게 따라할 수 있는 수많은 예제를 이용하여 작업함으로써 더 견고하고 안정적으로 애플리케이션을 개발하는 데 사용할 수 있는 실용적인 기술과 패턴을 배울 수 있다. 그리고 가장 일반적인 장애물을 피할 수 있는 방법을 찾을 수 있을 것이다.

이 책의 내용
- Objective-C의 처음부터 끝까지
- XCode 4로 개발하기
- iPhone을 위한 풍부한 예제

이 책을 공부하고 지식을 얻기 위해서 iOS나 모바일 경험을 요구하지 않지만 일반적인 프로그래밍에 친숙한 것은 도움이 된다.

저자인 Christopher Fairbairn과 Johannes Fahrenkrug, Collin Ruffenach은 지난 10년이 넘는 기간 동안 iOS과 Palm, Windows Mobile, Java 등 각기 다른 시스템을 이용해본 경험이 있는 전문적인 모바일 앱 개발자이다.

“곁에 두고 싶은 완벽한 참고서”
ㅡ Glenn Stokol, Oracle

“iOS 프로그래밍 입문서의 정수”
ㅡDave Bales, Whitescape

“Objective-C의 최고의 역작.. 나도 이 책을 완벽히 이해하고 싶다!”
ㅡDave Mateer, Mateer IT

“iPhone 애플리케이션 개발 도구의 정수를 담은 훌륭한 소개서“
ㅡCarl Douglas, NZX

“이 책과 함께라면 마켓에서 최고의 상품이 될 것이다.”
ㅡTed Neward, Neward & Associates 회장