도서 소개 오브젝티브-C 2.0 쾌속 학습 가이드! iOS와 Mac 개발의 시작, 그것은 바로 오브젝티브-C 언어를 정확하게 배우고 습득하는 일일 것이다. Xcode와 Interface Builder라는 강력한 도구들을 애플이 제공하지만, 애플리케이션에 생명을 불어넣는 것은 결국 오브젝티브-C 언어로 된 프로그래밍이다. 여러분이 꿈꾸는 킬러 앱(Killer Application)을 현실화해 줄 그 출발은 바로 이 책, 『핵심만 골라 배우는 오브젝티브-C 2.0』이 될 것이다.
이 책은 아이폰(아이팟 터치) 그리고 아이패드뿐만 아니라 맥용 애플리케이션 개발에 사용되는 오브젝티브-C에 대하여 핵심적인 내용을 다양한 예제와 함께 다루고 있다. 방대한 오브젝티브-C 2.0 내용들 중 가장 많이, 그리고 필수적으로 사용되는 것들에 대해 일목요연한 구성을 통해 설명하고 있는 이 책은 변수와 루프, 흐름 제어와 같은 오브젝티브-C의 기초들을 포함할 뿐만 아니라 오브젝티브-C Foundation 프레임워크와 메모리 파일 등을 이용한 객체지향 프로그래밍의 세부사항들도 다루고 있다. 더불어 프로그래밍에 필요한 배경 지식들도 제공한다. 오브젝티브-C 2.0의 핵심 문법을 빠르게 습득할 수 있도록 따라 하기 쉬운 34개의 장으로 구성된 이 책은 개발을 처음 시작하는 프로그래머들뿐만 아니라 다른 개발 경험이 많은 개발자에게도 아이폰(아이팟 터치), 아이패드, 그리고 맥용 애플리케이션 개발을 빠르게 착수할 수 있는 가이드 역할을 해줄 것이다.
이 책은 다음과 같은 내용을 다루고 있다.
• 다양한 플랫폼에 오브젝티브-C를 설치하는 방법들을 설명한다.
• 오브젝티브-C 프로그래밍의 기본 문법들을 설명한다.
• 객체지향 프로그래밍에 대한 개념과 오브젝티브-C 2.0의 특징들을 설명한다.
• 오브젝티브-C에서의 클래스와 함수를 선언하고 호출하는 방법을 설명한다.
• NSString과 NSMutableString으로 오브젝티브-C의 문자열 객체를 다루는 방법을 배운다.
• NSArray와 NSMutableArray를 가지고 배열 객체로 작업하는 방법들을 배운다.
• NSDictionary와 NSMutableDictionary 등의 주요 클래스들에 대해 설명한다.
• 파일, 디렉터리들을 생성하고 이용하는 방법들을 설명한다.
• #define과 #undef, 그리고 #import 등 전치리 지시자를 사용하는 방법을 설명한다. 독자 A/S: 피뤄의 컴터책(http://cafe.naver.com/petersbook) 저자 소개 닐 스미스(Neil Smyth)
닐 스미스는 20년 이상의 IT 개발 경력을 가지고 있다. 특히 프로그래밍 언어와 기업용 개발 도구, 그리고 사용자 인터페이스 디자인을 전문으로 해왔으며, 시스템 프로그래밍과 웹 개발, 그리고 마케팅을 담당했었다. 닐은 IT 학사 학위를 가지고 있고, Network+와 Project+, 그리고 자바와 마이크로소프트 MCP 자격증들을 가지고 있다. 또한 그는 12종의 기술 관련 서적을 집필하였으며, 현재는 미국에 위치한 인터넷 출판과 모바일 애플리케이션 개발 회사인 Payload Media의 공동 창업자이자 CEO로 재직 중이다. 역자 소개 황반석
한양대학교에서 컴퓨터 공학을 전공한 이후 한결같이 개발자의 길을 걷고 있다. 현재는 트렌디앱(http://www.trendyapp.co.kr)의 공동창업자로 폭넓은 모바일 세계를 개척하고 펼치겠다는 푸른 꿈을 꾸고 있다. 옮긴 책으로는 『렛츠 고! iOS 4 애플리케이션 개발』(2011, 제이펍), 『입문자를 위한 아이폰 게임 개발』(2011, 제이펍), 『맥과 아이폰 개발자를 위한 Xcode』(2010, 제이펍)가 있다. 독자 A/S: 피뤄의 컴터책(http://cafe.naver.com/petersbook) 차례 Chapter 01 이 책에 대하여 _ 1
1.1 이 책을 읽고 있는 이유가 무엇인가? 1
1.2 지원되는 플랫폼 2 Chapter 02 오브젝티브-C의 역사 _ 3 2.1 C 언어 3
2.2 Smalltalk 언어 4
2.3 C 언어, Smalltalk를 만나다 4
2.4 오브젝티브-C와 애플 4 Chapter 03 Mac OS X에서의 Xcode 설치와 오브젝티브-C 컴파일하기 _ 6 3.1 Mac OS X에서의 Xcode 설치하기 7
3.2 Xcode 시작하기 8
3.3 Xcode로 오브젝티브-C 애플리케이션 개발하기 10
3.4 커맨드 라인에서 오브젝티브-C 컴파일하기 11
Chapter 04 윈도우즈에 GNUstep과 오브젝티브-C 설치하고 사용하기_ 13
4.1 GNUstep 패키지 다운로드하기 13
4.2 윈도우즈용 MinGW와 GNUstep 설치하기 14
4.3 GNUstep Shell 실행하기 14
4.4 설치된 것 테스트하기 15 Chapter 05 리눅스에 GNUstep과 오브젝티브-C 설치하고 사용하기 _ 17
5.1 우분투에 GNUstep 설치하기 18
5.2 오브젝티브-C 코드 컴파일하기 19 Chapter 06 리눅스에서 GNUstep 빌드하고 설치하기 _ 21
6.1 리눅스에 gcc와 오브젝티브-C 지원 설치하기 21
6.2 패키지 의존성 22
6.3 GNUstep 소스 코드 얻기 22
6.4 빌드 과정 설정하기 23
6.5 GNUstep 빌드하기 24
6.6 설치된 오브젝티브-C와 GNUstep 테스트하기 25
6.7 오브젝티브-C 코드 컴파일하기 26 Chapter 07 오브젝티브-C 2.0의 데이터 타입 _ 28
7.1 int 데이터 타입 29
7.2 char 데이터 타입 30
7.2.1 특수 문자/이스케이프 문자 31
7.3 float 데이터 타입 32
7.4 double 데이터 타입 32
7.5 id 데이터 타입 32
7.6 BOOL 데이터 타입 33
7.7 오브젝티브-C 데이터 타입 수식자들 33
7.7.1 long 33
7.7.2 long long 34
7.7.3 short 34
7.7.4 signed/unsigned 34
7.8 요약 35 Chapter 08 오브젝티브-C 2.0의 변수와 상수 _ 36
8.1 오브젝티브-C 변수란 무엇인가? 36
8.2 오브젝티브-C 상수란 무엇인가? 37
8.3 오브젝티브-C 변수를 형 변환하기 38 Chapter 09 오브젝티브-C 2.0의 연산자와 표현식 _ 40
9.1 표현식이란 무엇인가? 40
9.2 기본 할당 연산자 41
9.3 오브젝티브-C의 산술 연산자 41
9.4 복합 할당 연산자 42
9.5 증가 연산자와 감소 연산자 43
9.6 비교 연산자 44
9.7 논리 연산자 45
9.8 삼항 연산자 47
9.9 비트 연산자 47
9.9.1 AND 48
9.9.2 OR 49
9.9.3 XOR 49
9.9.4 왼쪽 쉬프트 50
9.9.5 오른쪽 쉬프트 51
9.10 복합 비트 연산자 52 Chapter 10 오브젝티브-C 2.0의 연산자 우선순위 _ 53 10.1 연산자 우선순위의 예 53
10.2 연산자 우선순위와 결합성 54
10.3 우선순위 오버라이딩하기 56 Chapter 11 오브젝티브-C 2.0 코드 주석달기 _ 57
11.1 왜 코드에 주석을 달까? 57
11.2 한 줄 주석 58
11.3 여러 줄 주석 59
11.4 요약 60 Chapter 12 if와 else를 이용한 오브젝티브-C 흐름 제어 _ 61
12.1 if 문 사용하기 61
12.2 if ... else ... 문 사용하기 63
12.3 if ... else if ... 문 사용하기 63
12.4 요약 64 Chapter 13 오브젝티브-C의 switch 문 _ 65
13.1 switch 문을 왜 사용할까? 65
13.2 switch 문 문법 사용하기 66
13.3 switch 문 예제 67
13.4 예제 살펴보기 68
13.5 혼합된 case 문 69 Chapter 14 오브젝티브-C의 반복 - for 문 _ 70
14.1 왜 반복문을 사용할까? 70
14.2 오브젝티브-C 반복문 변수의 범위 73
14.3 무한 반복문 생성하기 73
14.4 for 문에서 빠져 나오기 74
14.5 중첩 반복문 75
14.6 중첩 반복문에서 빠져 나오기 75
14.7 반복문 재개하기 76
14.8 여러 변수들을 가진 for 문 사용하기 77 Chapter 15 오브젝티브-C의 반복 - do 그리고 while 문 _ 79
15.1 while 문 79
15.2 do ... while 문 80
15.3 반복문에서 빠져 나오기 81
15.4 continue 문 81 Chapter 16 오브젝티브-C 객체지향 프로그래밍의 개요 _ 83
16.1 객체란 무엇인가? 84
16.2 클래스란 무엇인가? 84
16.3 오브젝티브-C 클래스 인터페이스 선언하기 84
16.4 클래스에 인스턴스 변수 추가하기 85
16.5 클래스 메서드 정의하기 86
16.6 오브젝티브-C 클래스 구현체 선언하기 88
16.7 클래스 인스턴스의 선언과 초기화, 그리고 해제 89
16.8 메서드를 호출하여 인스턴스 데이터 접근하기 90
16.9 프로그램 부분 만들기 91
16.10 모두 합치기 92
16.11 객체지향 오브젝티브-C 코드 구조화하기 94 Chapter 17 오브젝티브-C의 클래스 메서드 만들기 _ 98
17.1 인스턴스 메서드와 클래스 메서드 98
17.2 새로운 클래스 메서드 생성하기 99
17.3 @interface 부분 99
17.4 @implementation 부분 100
17.5 main() 함수 101 Chapter 18 오브젝티브-C의 데이터 캡슐화, 통합된 접근자, 그리고 점 표기법 _ 103
18.1 데이터 캡슐화 103
18.2 통합된 접근자 메서드들 103
18.3 캡슐화된 데이터에 직접 접근 105
18.4 오브젝티브-C와 점 표기법 106
18.5 인스턴스 변수에 대한 접근 제어 107 Chapter 19 오브젝티브-C의 상속 _ 109
19.1 상속과 클래스, 그리고 자식 클래스 109
19.2 오브젝티브-C의 상속 예제 110
19.3 하위 클래스의 기능 확장하기 112
19.4 상속받은 메서드를 오버라이딩하기 113 Chapter 20 오브젝티브-C의 포인터와 인다이렉션_ 116
20.1 변수가 저장되는 방법 116
20.2 인다이렉션의 개요 118
20.3 인다이렉션과 객체 120
20.4 인다이렉션과 객체 복사하기 121 Chapter 21 id 타입을 이용한 오브젝티브-C의 동적 결합과 선언 _ 122
21.1 정적 선언 vs 동적 선언 122
21.2 동적 결합 123
21.3 다형성 125 Chapter 22 오브젝티브-C의 변수 범위와 기억 영역 분류_ 126 22.1 변수 범위 126
22.2 블록 범위 127
22.3 함수 범위 129
22.4 전역 범위 131
22.5 파일 범위 133
22.6 변수 기억 영역 분류 134 Chapter 23 오브젝티브-C 함수의 개요_ 135
23.1 함수란 무엇인가? 135
23.2 오브젝티브-C 함수를 선언하는 방법 136
23.3 main() 함수 137
23.4 오브젝티브 함수 호출하기 137
23.5 함수 프로토타입 138
23.6 함수의 범위와 static 지정자 141
23.7 함수의 정적 변수 142 Chapter 24 오브젝티브-C의 열거형_ 144
24.1 왜 열거형을 사용하는가? 144
24.2 열거형 선언하기 144
24.3 열거형을 생성하고 사용하기 145
24.4 열거형과 변수명 147 Chapter 25 오브젝티브-C Foundation 프레임워크에 대한 개요_ 148 25.1 Foundation 프레임워크 148
25.2 Foundation 헤더 포함하기 149
25.3 Foundation 프레임워크 문서 찾기 150 Chapter 26 오브젝티브-C의 문자열 객체로 작업하기_ 151
26.1 NSString을 사용하지 않은 문자열 151
26.2 상수 문자열 객체 선언하기 152
26.3 뮤터블 문자열 객체와 이뮤터블 문자열 객체 생성하기 153
26.4 문자열의 길이 얻기 154
26.5 문자열 복사하기 155
26.6 서브스트링을 위한 검색하기 157
26.7 문자열의 위치 변경하기 158
26.8 문자열 검색과 변경 159
26.9 문자열의 일부 지우기 159
26.10 문자열의 일부 추출하기 160
26.11 문자열에 문자 추가하기 161
26.12 문자열 끝에 문자 붙이기 161
26.13 문자열 비교하기 161
26.14 문자열의 접두사와 접미사 검사하기 163
26.15 대문자 또는 소문자로 변환하기 163
26.16 문자열을 숫자로 변환하기 165
26.17 문자열 객체를 ASCII로 변환하기 166 Chapter 27 오브젝티브-C의 숫자 객체 이해하기_ 167
27.1 NSNumber 객체를 생성하고 초기화하기 167
27.2 숫자 객체의 값 얻기 169
27.3 숫자 객체 비교하기 170
27.4 숫자 객체의 값을 문자열로 얻기 171 Chapter 28 오브젝티브-C의 배열 객체로 작업하기_ 172
28.1 뮤터블 배열과 이뮤터블 배열 172
28.2 배열 객체 생성하기 173
28.3 배열에서 항목의 개수 알아내기 173
28.4 배열 객체의 항목에 접근하기 174
28.5 고속 열거형을 이용한 배열의 항목 접근하기 175
28.6 배열 객체에 항목 추가하기 175
28.7 배열에 항목 삽입하기 175
28.8 배열 객체에서 항목 삭제하기 176
28.9 배열 객체 정렬하기 178 Chapter 29 오브젝티브-C의 딕셔너리 객체_ 179
29.1 딕셔너리 객체란 무엇인가? 179
29.2 딕셔너리 객체 생성하기 180
29.3 딕셔너리 객체를 초기화하고 항목 추가하기 180
29.4 항목의 개수 알아내기 181
29.5 딕셔너리 항목 접근하기 182
29.6 딕셔너리 객체에서 항목 제거하기 182 Chapter 30 오브젝티브-C에서 디렉터리 작업하기_ 183
30.1 NSFileManager와 NSFileHandle, 그리고 NSData 클래스 183
30.2 오브젝티브-C에서의 경로명 이해하기 184
30.3 NSFileManager 인스턴스 객체 생성하기 184
30.4 현재 작업 중인 디렉터리 식별하기 185
30.5 다른 디렉터리로 바꾸기 185
30.6 새로운 디렉터리 생성하기 186
30.7 디렉터리 삭제하기 187
30.8 디렉터리 이름 바꾸기와 이동하기 187
30.9 디렉터리에 있는 파일 목록 얻기 187
30.10 파일 또는 디렉터리의 속성 얻기 188 Chapter 31 오브젝티브-C에서 파일 작업하기_ 190
31.1 NSFileManager 인스턴스 생성하기 190
31.2 파일이 있는지 검사하기 191
31.3 두 개의 파일 내용 비교하기 191
31.4 읽기 가능/쓰기 가능/실행 가능/삭제 가능인지 검사하기 192
31.5 파일 이동하기/이름 바꾸기 192
31.6 파일 복사하기 193
31.7 파일 제거하기 193
31.8 심볼릭 링크 생성하기 194
31.9 NSFileManager로 파일 읽기와 쓰기 194
31.10 NSFileHandle 클래스를 이용하여 파일 작업하기 195
31.11 NSFileHandle 객체 생성하기 195
31.12 NSFileHandle 파일 오프셋과 검색 196
31.13 파일에서 데이터 읽기 197
31.14 파일에 데이터 쓰기 198
31.15 파일 잘라내기 199 Chapter 32 NSPathUtilities로 경로를 만들고 처리하기_ 200 32.1 경로의 구조 200
32.2 임시 디렉터리 찾기 201
32.3 현재 사용자의 홈 디렉터리 얻기 201
32.4 특정 사용자의 홈 디렉터리 얻기 202
32.5 경로에서 파일명 추출하기 202
32.6 파일 확장자 추출하기 203
32.7 경로 표준화하기 203
32.8 경로의 요소들 추출하기 204 Chapter 33 오브젝티브-C에서 객체 복사하기_ 205
33.1 객체와 포인터 205
33.2 <NSCopying> 프로토콜을 이용하여 오브젝티브-C의 객체 복사하기 206
33.3 <NSCopying> 프로토콜과 copyWithZone 메서드 구현하기 207
33.4 깊은 복사 실행하기 209 Chapter 342 오브젝티브-C의 전처리 지시자 사용하기_ 213
34.1 #define 문 213
34.2 #define 문으로 매크로 생성하기 215
34.3 #define 문으로 오브젝티브-C 언어 바꾸기 215
34.4 #undef 문으로 해제하기 217
34.5 조건부 컴파일 217
34.6 #import 지시자 219 찾아보기 220