저자소개 ... 5 감사의 글 ... 6 옮긴이 소개 ... 7 옮긴이의 말 ... 8 들어가며 ... 20 1부 개요 1장 개발 도구 둘러보기 엑스코드 ... 26 인터페이스 빌더 ... 28 정리 ... 30 2장 간단한 아이폰 애플리케이션 만들기 템플릿을 이용한 프로젝트 생성 ... 32 GUI 만들기 ... 34 간단한 UIVIEWCONTROLLER ... 37 아이폰에서 돌려보기 ... 41 정리 ... 42 3장 시뮬레이터 시뮬레이터 UI ... 46 멀티터치 시뮬레이션 ... 46 코어 로케이션 시뮬레이션 ... 47 시뮬레이터 회전 ... 49 시뮬레이터 파일시스템 ... 49 시뮬레이터와 실제 하드웨어의 차이 ... 51 실제 하드웨어에서 동작하지 않는 API 사용 회피 ... 51 시뮬레이터와 하드웨어의 성능 차이 ... 52 정리 ... 54 2부 GUI 4장 아이폰 UI 기초 아이폰 홈 화면 ... 60 시네마틱 UX ... 62 아이폰 내장 애플리케이션 ... 63 사용자와 UI 사이에 발생하는 상호 작용 ... 65 정리 ... 66 5장 UIViewController 기본적인 모델, 뷰, 컨트롤러 디자인 패턴 ... 68 UIVIEWCONTROLLER ... 70 UIVIEWCONTROLLER의 메소드 오버라이딩 ... 70 뷰 회전 관리 ... 72 메모리 경고 처리 ... 74 UIVIEWCONTROLLER 사용 ... 74 코드 생성 ... 75 UIViewController 헤더파일 작성 ... 77 UIViewController 구현 ... 78 인터페이스 빌더에 컨트롤러 추가 ... 82 UIApplicationDelegate 개요 ... 84 애플리케이션 델리게이트에서 모델 생성 ... 85 윈도우에 뷰 추가 ... 87 정리 ... 89 6장 UITableView UITABLEVIEWDATASOURCE와 UITABLEVIEWDELEGATE ... 92 UITableView와 NSIndexPath ... 93 UITableViewDataSource ... 93 UITableViewDelegate ... 98 애플리케이션에 UITABLEVIEW 추가 ... 100 UITableViewDataSource 작성 ... 101 애플리케이션 동작 확인 ... 108 행을 터치해 특정 동작을 수행하게 만들기 ... 109 UITABLEVIEW를 그룹 단위로 구성 ... 114 모델에 주 정보 추가 ... 114 UITableViewDataSource 수정 ... 116 UITABLEVIEW의 고급 설정 기능 ... 119 테이블 가장자리에 알파벳 순으로 나열된 인덱스 추가 ... 120 검색창 추가 ... 121 정리 ... 122 7장 UITableViewCell UITABLEVIEWCELL ... 124 UITABLEVIEWCELL에 이미지 추가 ... 126 UITABLEVIEWCELL에 대한 고급 커스터마이즈 ... 130 커스텀 셀 제작 시 고려할 성능 문제 ... 134 UITABLEVIEWCELL 재사용 ... 136 재사용 식별자 ... 138 정리 ... 140 8장 UINavigationController 내비게이션 모델 UINAVIGATIONCONTROLLER 모델 ... 141 UINAVIGATIONCONTROLLER 제작 ... 143 UINAVIGATIONCONTROLLER 설정 ... 145 UIVIEWCONTROLLER 추가와 제거 ... 147 UITOOLBAR 추가 ... 148 행 편집 기능 ... 149 UINavigationController로 MyView 이동 ... 149 EditViewController 제작 ... 150 행 편집 ... 154 행 추가 ... 158 행 삭제 ... 159 정리 ... 159 9장 UIApplicationDelegate UIAPPLICATIONDELEGATA 존재 이유 ... 161 애플리케이션 시작과 종료 ... 162 애플리케이션 구동 시 호출되는 메소드 ... 163 applicationWillTerminate 메소드 ... 164 애플리케이션 동작 중 메시지 수신 ... 165 자원 경고 처리 ... 167 전화 수신과 슬립 상태 처리 ... 168 상태 변화 ... 168 원격 알림 메시지 관리 ... 169 정리 ... 170 10장 커스텀 UIView 코코아 터치 뷰 지오메트리 ... 172 프로젝트에 커스텀 뷰 추가 ... 173 커스텀 뷰 코드 작성 ... 173 코어 그래픽스 ... 174 drawRect 작성 ... 181 정리 ... 184 11장 터치 이벤트 처리 커스텀 UIView에서 멀티터치 처리 ... 186 touchesBegan:withEvent: 구현 ... 186 터치정보 NSSet ... 188 touchesMoved:withEvent: 구현 ... 188 touchesEnded:withEvent: 구현 ... 189 멀티터치 이벤트 처리 ... 189 터치 이벤트를 처리하도록 커스텀 뷰 예제 업데이트 ... 189 터치를 이용한 원 이동 ... 190 원 크기 조절 기능 추가 ... 194 정리 ... 197 12장 코코아 터치에서 제공하는 컨트롤 코코아 터치에서 제공하는 여러 가지 컨트롤 ... 200 UISLIDER ... 201 인터페이스 빌더에서 UISlider 설정 ... 201 UISlider 상태 업데이트 ... 203 UITabBar ... 204 인터페이스 빌더에서 UITabBar 설정 ... 205 UITabBar에 UITabBarItem 추가 ... 205 UITabBar 고급 기능 설정 ... 207 UIPickerView ... 208 인터페이스 빌더에서 UIPickerView 설정 ... 208 UIPickerViewDataSource 생성 ... 208 UIPickerView 델리게이트 생성 ... 210 정리 ... 211 13장 텍스트 입력 처리 인터페이스 빌더를 이용한 키보드 설정 ... 214 대소문자 설정 ... 215 자동 완성 기능 활성화와 해제 ... 216 키보드 종류 설정 ... 217 리턴 키 동작 설정 ... 218 기타 설정 ... 218 코드를 이용한 키보드 설정 ... 219 키보드 표시 ... 219 UITextInputTraits ... 220 키보드 이벤트 처리 ... 221 UITextFieldDelegate 생성 ... 221 키보드 표시를 위한 뷰 이동 ... 223 정리 ... 225 14장 코어 애니메이션으로 시네마틱 UI 만들기 UIVIEW 애니메이션 메소드 ... 228 CALAYER를 이용한 코어 애니메이션 고급 기능 ... 235 UIIMAGEVIEW를 이용한 애니메이션 ... 239 정리 ... 240 15장 OpenGL ES 사용 아이폰의 OPENGL ES 기능 ... 242 기본적인 OPENGL 뷰 생성 ... 243 정리 ... 247 16장 사파리 이용 아이폰 웹 브라우저로 URL 열기 ... 250 UIWEBVIEW ... 251 애플리케이션에 UIWebView 추가 ... 252 URL 열기 ... 252 UIWebViewDelegate 구현 ... 253 애플리케이션 번들에 있는 HTML 로딩 ... 254 정리 ... 255 3부 데이터 다루기 17장 사용자 데이터 저장 NSUSERDEFAULTS 객체 접근 ... 260 NSUSERDEFAULTS에서 데이터 읽고 쓰기 ... 261 기본 사용자 데이터 설정 ... 263 설정 애플리케이션 ... 266 설정 번들 추가 ... 267 설정 내용 추가 ... 267 정리 ... 270 18장 코어 데이터를 이용한 데이터베이스 코어 데이터 기본 구성 ... 272 좋아하는 도시 예제에 코어 데이터 지원 기능 추가 ... 274 애플리케이션 델리게이트 변경 ... 275 매지티드 오브젝트 모델 활용 ... 280 CRUD ... 284 생성 ... 284 읽기 ... 285 업데이트 ... 287 삭제 ... 287 좋아하는 도시s 예제 업데이트 ... 287 코어 데이터 활용 분야 ... 297 코어 데이터 활용에 부적합한 분야 ... 297 정리 ... 298 19장 네트워크로 외부와 통신 웹 접근 ... 300 파운데이션 클래스에서 URL 사용 ... 300 NSURLRequest와 NSURLConnection 사용 ... 302 메시지 UI 프레임워크를 이용해 애플리케이션에서 이메일 발송 ... 307 코어 파운데이션 소켓 ... 311 CFSocket ... 313 CFHost를 이용한 호스트 정보 획득 ... 317 CFStream ... 319 봉주르 탐색 ... 323 봉주르 서비스 탐색 ... 323 NSNetService ... 326 정리 ... 328 20장 푸시 알림 서비스 푸시 알림 서비스 구조 ... 331 푸시 알림 커뮤니케이션 ... 331 푸시 알림의 보안 ... 337 푸시 알림 메시지용 인증서 ... 339 서버단의 푸시 알림 서비스 개발 ... 342 루비로 작성한 푸시 알림 제공자 ... 342 푸시 알림 메시지 전송 ... 346 피드백을 이용한 전송 확인 ... 346 아이폰 클라이언트에서 푸시 알림 사용 ... 346 알림 메시지 수신 등록 ... 347 애플리케이션에서 알림 메시지 수신 ... 348 정리 ... 349 21장 게임킷 API P2P 연결 ... 352 장치 검색 ... 352 세션 작업 ... 356 게임 내 음성 기능 ... 361 정리 ... 365 22장 잘라내기, 복사, 붙여넣기 표준 컨트롤에서 복사와 붙여넣기 기능 ... 368 페이스트보드의 종류 ... 368 UIPAETEBOARD 사용 ... 369 커스텀 뷰에서 잘라내기, 복사하기, 붙여넣기 ... 371 메뉴 표시를 위한 touchesEnded:withEvent: 구현 ... 371 copy: 메소드 구현 ... 372 paste: 메소드 구현 ... 373 동작 방식 ... 374 정리 ... 374 23장 지도 API MKMAPVIEW를 이용한 내장 지도 표시 ... 375 MKMapView 생성 ... 376 지도 영역 지정 ... 377 지도 상에 설명 추가 ... 380 설명과 지도 성능과의 관계 ... 382 좌표 변환 ... 382 정리 ... 385 4부 미디어 24장 아이폰에서 지원하는 미디어 타입 아이폰에서 지원하는 오디오 포맷 ... 389 압축 방식 오디오 포맷 ... 390 비압축 방식 오디오 포맷 ... 390 아이폰에서 지원하는 비디오 포맷 ... 391 정리 ... 391 25장 오디오 재생 AV 파운데이션 프레임워크 ... 394 AVAudioSession ... 394 AVAudioSessionDelegate ... 397 AVAudioPlayer로 오디오 재생 ... 398 AVAudioPlayerDelegate ... 401 OPENAL로 오디오 재생 ... 401 정리 ... 402 26장 아이팟 라이브러리 접근 미디어 플레이어 프레임워크 작업 ... 404 미디어 라이브러리 접근 ... 404 MPMediaPickerController를 이용하는 방법 ... 405 미디어 검색 ... 408 플레이어 컨트롤러 ... 413 미디어 표지 ... 415 정리 ... 416 27장 오디오 녹음 AVAUDIONSESSION 설정 ... 417 AVAudIORECORDER 생성 ... 419 음성 녹음기 생성 ... 421 정리 ... 426 28장 애플리케이션에서 비디오 재생 애플리케이션 번들에 포함된 비디오 파일 재생 ... 428 인터넷을 통한 비디오 재생 ... 430 정리 ... 431 5부 아이폰 하드웨어 다루기 29장 디바이스 정보 가져오기 배터리 상태 확인 ... 436 접근 센서 ... 436 디바이스 메타데이터 ... 437 정리 ... 438 30장 코어 로케이션 현재 위치 알아내기 ... 442 CLLocationManager 할당 ... 443 델리게이트 설정 ... 444 CLLocationManagerDelegate 프로토콜 구현 ... 445 위치 업데이트 시작과 중단 ... 446 구글 맵에 위치 표시 ... 446 좌표 오차 줄이기 ... 448 위치 정보 필터링 ... 449 완성된 예제 코드 ... 450 아이폰 3GS의 나침반 기능 ... 453 정리 ... 454 31장 가속도계 현재 방향 알아내기 ... 456 기포 수준기 만들기 ... 458 UIAcceleration 오브젝트 ... 462 쉐이크 이벤트 ... 462 쉐이크 이벤트 검출 ... 463 drawRect ... 463 motionBegan과 motionEnded 작성 ... 465 모션 이벤트 취소 ... 465 정리 ... 466 32장 아이폰 주변 장치 아이폰에 연결할 주변장치 생성 ... 467 EAACCESSORYMANAGER로 현재 연결된 주변장치 찾기 ... 468 EAACCESSOR 클래스 ... 469 EASESSION ... 470 NSSTREAM으로 디바이스와 통신 ... 471 정리 ... 472 6부 애플리케이션 배포 33장 코드 서명 개발 인증서 받기 ... 476 프로비저닝 프로세스 ... 476 개발, 배포, 애드혹 프로비저닝 ... 477 프로비저닝 프로파일 설치 ... 478 서명한 애플리케이션의 동작 ... 480 서명할 애플리케이션 설정 ... 480 애드혹 빌드 ... 482 엑스코드에서 빌드 설정 ... 482 사용자에게 배포 ... 484 정리 ... 484 34장 애플리케이션 확장 판매할 수 있는 상품의 종류 ... 486 잠금 해제 컨텐츠 ... 487 아이튠즈 커넥트에 구매 가능한 컨텐츠 준비 ... 489 스토어 킷 작업 ... 490 컨텐츠 구매 기능 활성화 검사 ... 490 스토어 표시 ... 491 상품 구매 ... 493 과금 처리 ... 493 트랜잭션 유효성 검사 ... 496 컨텐츠 잠금 해제 ... 496 구매한 컨텐츠 복구 ... 497 애플리케이션 내 구매 테스트 ... 498 정리 ... 499 찾아보기 ... 501