목차
CHAPTER 01 정글에 온 것을 환영한다 ... 1
   이 책은 어떤 종류의 책인가 ... 1
   시작하기 전에 준비해 두어야 하는 것들 ... 2
   시작하기 전에 알아두어야 할 것들 ... 4
   아이폰 코딩은 어떤 점이 다른가? ... 5
      한 번에 단 하나의 애플리케이션만 구동한다 ... 6
      단 하나의 윈도우 ... 6
      접근 권한의 제약 ... 6
      응답 시간의 제약 ... 6
      시스템 자원의 제약 ... 7
      코코아 개발 도구들의 누락 ... 8
      새로운 기능 ... 8
      다른 접근법 ... 8
   이 책의 구성 ... 8
   준비가 되었는가? ... 11
CHAPTER 02 티키신 달래기 ... 13
   Xcode에서 프로젝트 설정하기 ... 13
      Xcode 프로젝트 창 ... 16
   인터페이스 빌더 소개 ... 19
      Nib 파일에는 무엇이 있나? ... 21
      View에 레이블 추가하기 ... 22
   아이폰을 빛낼 몇 가지 마무리 손질 ... 25
      컴파일과 실행을 위한 준비 ... 28
   마무리하며 ... 29
CHAPTER 03 기본적인 상호작용 다루기 ... 31
   모델-뷰-컨트롤러 패러다임 ... 32
   프로젝트 생성하기 ... 33
   뷰 컨트롤러 생성하기 ... 33
      아웃렛 ... 35
      액션 ... 36
      뷰 컨트롤러에 액션과 아웃렛 추가하기 ... 36
      구현 파일에 액션과 아웃렛 추가하기 ... 40
   애플리케이션 델리게이트 사용하기 ... 45
   MainWindow.xib 편집하기 ... 48
   Button_FunViewController.xib 편집하기 ... 49
      인터페이스 빌더에서 뷰 생성하기 ... 49
      모든 것에 연결하기 ... 52
      실행하기 ... 56
   마무리하며 ... 57
CHAPTER 04 사용자 인터페이스, 좀 더 재미있게 만들기 ... 59
   컨트롤로 가득 찬 화면 ... 60
   능동, 정적, 수동 컨트롤 ... 61
   애플리케이션 만들기 ... 62
      이미지 가져오기 ... 62
      이미지 뷰와 텍스트 필드 구현 ... 63
      이미지 뷰 추가하기 ... 65
      텍스트 필드 추가하기 ... 69
      두 번째 텍스트 필드의 속성 정하기 ... 72
      아웃렛 연결하기 ... 72
   빌드하고 실행하기 ... 73
      Done을 누르면 키보드 사라지게 만들기 ... 73
      배경을 터치하면 키보드 사라지게 만들기 ... 75
   슬라이더와 레이블 구현하기 ... 76
      아웃렛 정하기 ... 76
      액션 정하기 ... 77
      아웃렛과 액션 추가하기 ... 77
      슬라이더와 레이블 추가하기 ... 78
      액션과 아웃렛 연결하기 ... 79
   스위치와 분할 컨트롤 구현하기 ... 80
      아웃렛 정하기 ... 80
      액션 정하기 ... 80
      스위치와 분할 컨트롤 추가하기 ... 82
      아웃렛 연결하기 ... 84
   버튼, 액션 시트 그리고 경고창 구현하기 ... 85
      컨트롤러 헤더 파일에 아웃렛과 액션 추가하기 ... 85
      인터페이스 빌더에서 버튼 추가하기 ... 86
      버튼의 액션 메서드 구현하기 ... 86
   액션 시트 보여주기 ... 87
      액션 시트 델리게이트와 경고창 만들기 ... 89
   버튼 멋 내기 ... 90
      viewDidLoad 메서드 ... 91
      제어 상태 ... 92
      크기를 늘릴 수 있는 이미지 ... 92
   결승점 통과하기 ... 93
CHAPTER 05 자동회전과 자동크기조절 ... 95
   AutoSize 속성으로 회전 처리하기 ... 97
      회전 지원 여부를 명시하기 ... 97
      AutoSize 속성을 적용해 인터페이스 설계하기 ... 99
      AutoSize 속성 ... 100
      버튼에 Autosize 속성 설정하기 ... 102
   회전할 때 뷰 재구성하기 ... 103
      아웃렛 선언하고 연결하기 ... 104
      회전할 때 버튼 이동하기 ... 105
   뷰 전환하기 ... 108
      아웃렛 결정하기 ... 109
      액션 결정하기 ... 110
      액션과 아웃렛 선언하기 ... 110
      두 개의 뷰 설계하기 ... 111
      스왑과 액션 구현하기 ... 112
      코어 그래픽스 프레임워크 링크하기 ... 115
   회전 기능을 마치면서 ... 118
CHAPTER 06 멀티뷰 애플리케이션 ... 119
   뷰 스위처 애플리케이션 ... 122
   멀티뷰 애플리케이션의 구조 ... 123
      멀티뷰 컨트롤러는 뷰 컨트롤러이다 ... 123
      콘덴트 뷰 해부 ... 123
   뷰 스위처 만들기 ... 124
      뷰 컨트롤러와 nib 파일 만들기 ... 125
      애플리케이션 델리게이트 수정하기 ... 127
      SwitchViewController.h ... 128
      MainWindow.xib 고치기 ... 129
      SwitchViewController.m 작성하기 ... 132
      콘텐트 뷰 구현하기 ... 135
   전환 시 애니메이션 주기 ... 138
   리팩터링 ... 141
   끝내기 ... 143
CHAPTER 07 탭바와 피커 ... 145
   피커 애플리케이션 ... 146
   델리게이트와 데이터소스 ... 147
   탭바 프레임워크 설정하기 ... 148
      파일 생성 ... 148
      컨텐츠 뷰 Nib 설정하기 ... 149
      루트 뷰 컨트롤러 추가하기 ... 150
   날짜 피커 구현하기 ... 154
   단일 컴포넌트 피커 구현하기 ... 157
      아웃렛과 액션 선언하기 ... 157
      뷰 만들기 ... 158
      컨트롤러를 데이터소스와 델리게이트로 구현하기 ... 159
   멀티컴포넌트 피커 구현하기 ... 164
      아웃렛과 액션 선언하기 ... 164
      뷰 만들기 ... 165
      컨트롤러 구현하기 ... 165
   의존적인 컴포넌트 구현하기 ... 169
   커스텀 피커로 간단한 게임 만들기 ... 177
      컨트롤러 헤더 파일 작성하기 ... 177
      뷰 만들기 ... 178
      이미지 리소스 추가하기 ... 179
      컨트롤러 구현하기 ... 179
      Spin 메서드 ... 182
      viewDidLoad 메서드 ... 183
      마지막 세부사항들 ... 186
      오디오 툴박스 프레임워크에 연결하기 ... 190
   마지막 회전 ... 190
CHAPTER 08 테이블 뷰 입문 ... 191
   테이블 뷰의 기초 ... 192
      그룹으로 묶은 테이블과 인덱스로 구분한 테이블 ... 193
   간단한 테이블 구현하기 ... 195
      뷰 설계하기 ... 195
      컨트롤러 작성하기 ... 196
   이미지 추가하기 ... 200
   추가적인 설정 ... 201
      들여쓰기 레벨 설정하기 ... 201
      행 선택 다루기 ... 202
      폰트 크기와 행의 높이 바꾸기 ... 204
      델리게이트로 할 수 있는 다른 기능은? ... 205
   맞춤형 테이블 뷰 셀 만들기 ... 205
      Cells 애플리케이션 ... 206
      테이블 뷰 셀에 하위뷰 추가하기 ... 206
      UITableViewCell의 하위클래스를 맞춤형으로 사용하기 ... 210
   그룹으로 묶은 섹션과 인덱스로 구분한 섹션 ... 215
      뷰 조립하기 ... 215
      데이터 가져오기 ... 215
      컨트롤러 구현하기 ... 216
      인덱스 추가하기 ... 220
   검색창 구현하기 ... 221
      디자인 다시 생각하기 ... 221
      깊은 뮤터블 복사 ... 222
      컨트롤러 헤더파일 갱신하기 ... 224
      뷰 수정하기 ... 226
      컨트롤러 구현 수정하기 ... 227
   테이블에 모두 넣기 ... 236
CHAPTER 09 내비게이션 컨트롤러와 테이블 뷰 ... 237
   내비게이션 컨트롤러 ... 238
      스택을 사용하면 좋은 점 ... 238
   여섯 부분으로 구성된 계층구조 애플리케이션, Nav ... 240
   Nav 애플리케이션의 뼈대 구성하기 ... 243
      루트 뷰 컨트롤러 생성하기 ... 243
      내비게이션 컨트롤러 설정하기 ... 244
   첫 번째 하위컨트롤러: 더보기 버튼 뷰 ... 252
   두 번째 하위컨트롤러: 체크리스트 ... 260
   세 번째 하위컨트롤러: 테이블 열 위에 컨트롤 추가하기 ... 266
   네 번째 하위컨트롤러: 이동 가능한 열 ... 272
      편집 모드 ... 272
      새로운 2차 레벨 컨트롤러 생각하기 ... 272
   다섯 번째 하위컨트롤러: 삭제 가능한 열 ... 279
   여섯 번째 하위컨트롤러: 편집 가능한 상세 창 ... 285
      데이터 모델 객체 생성하기 ... 286
      컨트롤러 생성하기 ... 288
      상세 뷰 컨트롤러 생성하기 ... 292
   한 가지가 더 남아있다… ... 309
   결승선 테이프 끊기 ... 313
CHAPTER 10 애플리케이션 설정과 사용자 기본값 ... 315
   세팅 번들 이해하기 ... 316
   AppSettings 애플리케이션 ... 317
   세팅 번들 다루기 ... 321
      세팅 번들을 프로젝트에 추가하기 ... 321
      프로퍼티 리스트 설정하기 ... 322
      텍스트 필드 설정 추가하기 ... 324
      암호화된 텍스트 필드 설정 추가하기 ... 326
      멀티밸류 필드 추가하기 ... 326
      토글 스위치 세팅 추가하기 ... 328
      슬라이더 세팅 추가하기 ... 328
      하위 설정 뷰 추가하기 ... 330
   애플리케이션에서 설정 읽기 ... 331
   애플리케이션에서 설정 바꾸기 ... 336
   스코티, 순간이동을 시작해 주게 ... 339
CHAPTER 11 기본적인 데이터 저장 방법 ... 341
   애플리케이션 샌드박스 ... 342
      Documents 디렉터리 경로 가져오기 ... 343
      tmp 디렉터리 경로 가져오기 ... 344
   파일 저장 기법 ... 344
      하나의 파일에 데이터 저장하기 ... 344
      여러 파일에 데이터 저장하기 ... 345
   애플리케이션 데이터 저장하기 ... 345
      프로퍼티 리스트 직렬화 ... 345
   퍼시스턴스 애플리케이션 ... 347
      퍼시스턴스 프로젝트 생성하기 ... 348
      퍼시스턴스 애플리케이션 뷰 설계하기 ... 349
      퍼시스턴스 클래스 편집하기 ... 349
      아카이빙 모델 객체 ... 354
      NSCopying 프로토콜 구현하기 ... 355
   아카이빙 애플리케이션 ... 357
      FourLines 클래스 구현하기 ... 358
      PersistenceViewController 클래스 구현하기 ... 359
   아이폰에 내장된 SQLite3 사용하기 ... 363
      SQLite3 사용을 위한 프로젝트 설정하기 ... 366
   끈기에 대한 보상 ... 373
12장 쿼츠와 OpenGL을 이용한 그리기 ... 375
   그래픽 세계의 두 뷰 ... 376
   드로잉 애플리케이션 ... 377
   드로잉을 위한 쿼츠 사용법 ... 377
      쿼츠 2D 그래픽스 컨텍스트 ... 377
      좌표계 ... 379
      색 정의하기 ... 380
      컨텍스트에 이미지 그리기 ... 382
      도형 그리기: 다각형, 선, 커브 ... 382
      쿼츠 2D 툴 샘플러 : 패턴, 그레디언트, 대시 패턴 ... 383
   QuartzFun 애플리케이션 만들기 ... 383
      랜덤 색 만들기 ... 385
      애플리케이션 상수 정의하기 ... 386
      QuartzFunView 뼈대 구현하기 ... 386
      뷰 컨트롤러에 아웃렛과 액션 추가하기 ... 389
      QuartzFunViewController.xib 업데이트하기 ... 392
      선 그리기 ... 394
      직사각형과 타원 그리기 ... 396
      이미지 그리기 ... 398
   OpenGL의 기본 ... 404
      GLFun 애플리케이션 만들기 ... 405
   빈 화면 그리기 ... 417
CHAPTER 13 탭, 터치 그리고 제스처 ... 419
   멀티터치 관련 용어 ... 420
   리스폰더 체인 ... 420
      이벤트 전달하기: 리스폰더 체인 유지하기 ... 422
   멀티터치 아키텍처 ... 423
      4개의 제스처 통보 매서드 ... 423
   터치 익스플로러 애플리케이션 ... 425
   스와이프 애플리케이션 ... 428
   멀티 스와이프 구현하기 ... 432
   멀티탭 인식하기 ... 435
   핀치 인식하기 ... 439
   커스텀 제스처 정의하기 ... 443
      제스처 인식 메서드 ... 447
   웨이터? 확인 부탁해요! ... 447
CHAPTER 14 여기가 어디지? 코어 로케이션을 이용한 길 찾기 ... 449
   로케이션 매니저 ... 450
      정밀도 설정하기 ... 450
      디스턴스 필터 설정하기 ... 451
      로케이션 매니저 동작시키기 ... 451
      효율적으로 로케이션 매니저 사용하기 ... 451
   로케이션 매니저 델리게이트 ... 452
      위치 정보 갱신하기 ... 452
      CLLocation을 사용한 위도와 경도 구하기 ... 452
      에러 통보 ... 453
   코어 로케이션 사용하기 ... 454
      로케이션 매니저 업데이트하기 ... 458
      이동 거리 측정하기 ... 459
   여러분이 어디에 가더라도, 그곳에 여러분이 있다 ... 460
CHAPTER 15 야호! ... 461
   가속도 센서의 물리법칙 ... 461
   가속도 센서 사용하기 ... 463
      UIAcceleration ... 463
      accelerometer:didAccelerate: 매서드 구현하기 ... 465
   흔들어서 깨뜨리기 ... 467
      화면 깨뜨리기 코드 ... 468
      시뮬레이션에 필요한 파일 로딩하기 ... 471
      괜찮아 - 깨진 아이폰을 복구하기 ... 472
   구슬 굴리기 프로그램 ... 473
      Ball View Controller 클래스 구현하기 ... 474
      Ball View 클래스 구현하기 ... 475
      구슬의 움직임 계산하기 ... 479
   구르기 ... 482
CHAPTER 16 아이폰의 카메라와 포토 라이브러리 ... 483
   이미지 피커와 UIImagePickerController 사용하기 ... 484
   이미지 피커 컨트롤러의 델리게이트 구현하기 ... 485
   카메라와 라이브러리 길거리 테스트 ... 487
      인터페이스 설계하기 ... 488
      카메라 뷰 컨트롤러 구현하기 ... 488
   누워서 떡 먹기! ... 493
CHAPTER 17 애플리케이션 지역화 ... 495
   지역화 아키텍처 ... 496
   문자열 파일 사용하기 ... 497
      문자열 파일 만들기 ... 499
   실생활에서의 아이폰: 애플리케이션 지역화하기 ... 500
      현재 로케일 참조하기 ... 503
      LocalizeMe 실행하기 ... 505
      Nib 파일 지역화하기 ... 506
      지역화된 프로젝트 구조 살펴보기 ... 507
      이미지 지역화하기 ... 510
      애플리케이션 아이콘 지역화하기 ... 511
      문자열 파일 생성하고 지역화하기 ... 511
   안녕, 또 만나요 ... 515
CHAPTER 18 다음은 어디로? ... 517
   새로운 여행 준비 ... 517
      애플의 도큐멘테이션 ... 518
      Mailing Lists ... 518
      토론 포럼 ... 519
      웹 사이트 ... 519
      블로그 ... 520
      별 다른 해결책을 찾지 못하였다면… ... 521
   작별 인사 ... 521
APPENDIX A 강력해진 UIKit 프레임워크 ... 523
APPENDIX B 코어 데이터 ... 525
   코어 데이터의 이해 ... 526
   Core Data를 이용한 전화번호부 ... 528
   데이터 CRUD ... 531
      데이터 생성하기(Create) ... 531
      데이터 읽기(Retrieve) ... 534
      데이터 수정하기(Update) ... 537
      데이터 삭제하기(Delete) ... 540
APPENDIX C 자르기, 복사하기, 붙여넣기 ... 545
APPENDIX D External Accessory 프레임워크 ... 549
   EAAccessory ... 549
      연결 정보 ... 550
      기기 정보 ... 550
      delegate 연결 ... 550
   EAAccessoryManager ... 551
      외부기기 관리자 ... 551
      외부기기로부터의 알람 메시지에 대한 등록과 해제 ... 551
      외부기기 정보 ... 551
   EASession ... 552
      세션 초기화 ... 552
      세션 정보 ... 552
      스트림 통신 얻기 ... 552
   EAAccessoryDelegate ... 553
APPENDIX E MapKit 프레임워크 ... 555
   애플리케이션 내에 맵뷰 띄우기 ... 556
   특정 위치의 주소정보 가져오기 ... 560
   지도에 사용자의 위치 태깅 애노테이션 달기 ... 563
APPENDIX F MessageUI 프레임워크 ... 569
   버그리포트 메일 전송 기능 구현 ... 569
APPENDIX G AV Foundation 프레임워크 ... 575
   녹음 ... 575
APPENDIX H Media Player 프레임워크 ... 581
   특정 곡 저장 후 검출 ... 586
APPENDIX I 애플 푸시 노티피케이션 서비스 ... 587
   개요 ... 588
      경고 ... 588
      배지(badge) ... 589
      소리 ... 589
      활용 ... 590
      1. SSL 인증서와 키 생성 ... 591
      2. 프로파일 프로비젼 파일 생성 ... 591
      3. 프로바이더 구현 ... 591
      클라이언트 구현 ... 593
APPENDIX J Store Kit 프레임워크 ... 601
APPENDIX K Game Kit 프레임워크 ... 615
닫기