목차
PART 1 iOS 앱 개발을 위한 준비
   1. 애플, 맥, 아이폰 그리고 앱스토어 ... 23
      1.1 애플과 매킨토시 그리고 아이폰 ... 24
      1.2 앱스토어의 폭발적인 성장과 모바일 플랫폼 경쟁 ... 25
      1.3 개인 개발자와 디자이너의 꿈을 실현할 수 있는 무대 ... 26
   2. 아이폰 앱 개발을 위해 필요한 모든 것 ... 27
      2.1 개발용 Mac ... 28
      2.2 테스트 장비 ... 28
      2.3 Apple Developer Connection 가입하기(무료) ... 32
      2.4 iOS SDK 설치하기 ... 34
      2.5 iOS Developer Program 가입하기 ... 35
        2.5.1 iOS Developer Program 신청하기 ... 35
        2.5.2 iOS Developer Program 구매하기 ... 39
      2.6 판매 수익금을 받기 위한 계좌 정보 등록하기 ... 40
        2.6.1 Contract Information 등록하기 ... 41
        2.6.2 Banking Information 등록하기 ... 43
        2.6.3 Tax Information 등록하기 ... 45
      2.7. 필수 참고 자료 및 사이트 ... 47
   3. 기기등록 및 개발환경 살펴보기 ... 49
      3.1 기기에서 앱 실행하기 ... 50
        3.1.1 CSR로 Development Certificate 만들기 ... 50
        3.1.2 개발기기 등록하기 ... 53
        3.1.3 App ID 등록하기 ... 54
        3.1.4 Provisioning Profile 만들어 설치하기 ... 54
        3.1.5 Xcode 빌드 설정하기 ... 56
      3.2 개발 환경 둘러보기 ... 58
PART 2 iOS 앱 개발을 위한 핵심 정리
   1. 개발자와 디자이너 모두를 위한 iOS의 UI요소 정리 ... 63
      1.1 아이폰 앱 UI의 기본 구조 ... 64
      1.2 View(UIView) ... 65
      1.3 Status Bar ... 67
      1.4 Navigation Bar(UINavigationBar) ... 67
      1.5 Tool Bar(UIToolBar) ... 68
      1.6 Tab Bar(UITabBar) ... 68
      1.7 Table View(UITableView) ... 70
      1.8 Label(UILabel) ... 70
      1.9 Text View(UITextView) ... 72
      1.10 Text Field(UITextField) ... 73
      1.11 Web View(UIWebView) ... 73
      1.12 Button(UIButton) ... 74
      1.13 Segmented Control(UISegmentedControl) ... 74
      1.14 Slider(UISlider) ... 75
      1.15 Date Picker(UIDatePicker) ... 75
      1.16 Pickers(UIPickerView) ... 76
      1.17 Action Sheet(UIActionSheet) ... 76
      1.18 Alert(UIAlertView) ... 77
      1.19 Modal View ... 77
      1.20 Page Indicator(UIPageControl) ... 78
      1.21 Progress View(UIProgressView) ... 78
      1.22 Activity Indicator(UIActivityIndicatorView) ... 78
      1.23 Search Bar(UISearchBar) ... 78
   2. Objective-C 입문 ... 79
      2.1 절차식 프로그래밍과 객체지향 프로그래밍의 차이점 ... 80
      2.2 Objective-C 기초 ... 84
        2.2.1 Objective-C의 특징 ... 84
        2.2.2 Objective-C의 메시징 ... 84
        2.2.3 Objective-C의 데이터 타입 ... 85
        2.2.4 Objective-C의 클래스 ... 86
      2.3 클래스 선언 및 정의하기 ... 93
        2.3.1 헤더 파일과 소스 파일의 분리 ... 93
        2.3.2 헤더 파일 .h ... 93
        2.3.3 소스 파일 .m ... 96
        2.3.4 인스턴스 변수의 접근 권한 설정 ... 97
      2.4 객체의 생성, 사용 그리고 소멸 ... 98
        2.4.1 객체 생성하기(메모리 할당과 초기화) ... 98
        2.4.2 객체 사용하기(메모리 관리) ... 100
        2.4.3 객체 제거하기(메모리 해제) ... 102
      2.5 프로퍼티 선언과 구현 ... 108
        2.5.1 프로퍼티 선언하기 ... 108
        2.5.2 프로퍼티 속성 ... 109
        2.5.3 프로퍼티 구현하기 ... 112
        2.5.4 .을 사용하여 접근 메소드 호출하기 ... 114
      2.6 프로토콜 ... 115
      2.7 카테고리와 클래스 확장 ... 123
        2.7.1 클래스에 메소드 추가하기 ... 123
        2.7.2 카테고리의 장점과 단점 ... 125
        2.7.3 루트 클래스의 카테고리 ... 126
        2.7.4 클래스 확장 ... 126
      2.8 파운데이션 프레임워크 ... 128
        2.8.1 루트 클래스 ... 128
        2.8.2 문자열 관련 클래스 ... 128
        2.8.3 객체 집합 관련 클래스 ... 132
        2.8.4 값(정수 및 실수) 표현 관련 클래스 ... 140
   3. Hello World! ... 143
      3.1 아이폰 앱 개발의 큰 그림을 그려보자 ... 144
      3.2 아이폰 앱의 구조와 흐름을 이해하자 ... 145
      3.3 기본적인 Hello World 앱 만들기 ... 146
        3.3.1 프로젝트 생성하기 ... 146
        3.3.2 인터페이스 만들기 ... 150
      3.4 아이폰다운 Hello World 앱 만들기 ... 153
        3.4.1 Button(UIButton) 추가하기 ... 153
        3.4.2 코드에 Outlet과 Action 추가하기 ... 154
        3.4.3 인터페이스와 코드 연결하기 ... 156
        3.4.4 이미지 추가하기 ... 158
        3.4.5 터치 상호작용 추가하기 ... 160
        3.4.6 슬라이더 추가하기 ... 163
        3.4.7 가속도 센서 지원하기 ... 166
        3.4.8 아이콘 만들어 적용하기 ... 169
   4. iOS 5와 6의 새로운 기능들 ... 171
      4.1 iCloud API ... 172
      4.2 알림 센터 ... 172
      4.3 자동 참조 카운팅 ... 172
      4.4 스토리보드 ... 173
      4.5 위치 시뮬레이션 ... 173
      4.6 트위터 통합 ... 173
      4.7 페이스북 통합 ... 173
      4.8 Core Image ... 174
      4.9 게임 센터 ... 174
      4.10 OpenGL ES ... 174
      4.11 AirPlay 개선 ... 174
      4.12 Instruments 개발 도구의 새 기능들 ... 175
      4.13 Auto Layout ... 175
      4.14 Reminders ... 175
      4.15 In-App Purchase ... 175
      4.16 Maps ... 175
      4.17 웹킷과 사파리 ... 175
      4.18 Passbook ... 176
      4.19 Camera ... 176
   5. ARC 설정과 사용 방법 ... 177
      5.1 간단한 예제 코드를 통해 ARC 살펴보기 ... 178
      5.2 ARC 기능을 활성화·비활성화하는 방법 ... 182
        5.2.1 새 프로젝트를 시작할 때 ARC 기능 설정하기 ... 182
        5.2.2 프로젝트를 만든 뒤에 ARC 기능 설정하기 ... 182
        5.2.3 프로젝트를 만든 뒤에 외부 소스를 가져와 사용하는 경우 ... 183
      5.3 변수 및 프로퍼티 관련 지시어 ... 186
        5.3.1 프로퍼티 관련 지시어 ... 186
        5.3.2 변수 관련 지시어 ... 187
        5.3.3 Objective-C 객체 사이의 참조 방식 ... 189
        5.3.4 weak 속성을 사용해야 하는 경우 ... 190
      5.4 메모리 관리 메소드 사용 금지 ... 192
      5.5 그 외 기타 규칙들 ... 193
   6. Storyboard의 특징과 사용 방법 ... 197
      6.1 Storyboard란 무엇인가? ... 198
      6.2 예제 프로그램을 위한 새 프로젝트 생성하기 ... 199
      6.3 Storyboard를 이용하여 기본 화면 구성하기 ... 200
      6.4 Navigation Controller로 화면 구성하기 ... 202
        6.4.1 Navigation Controller 만들고 설정하기 ... 202
        6.4.2 Push Segue 사용 방법 알아보기 ... 209
        Segue의 종류와 사용 용도 ... 210
      6.5 Tab Bar Controller를 이용하여 화면 구성하기 ... 216
        6.5.1 Tab Bar Controller 만들고 설정하기 ... 216
        6.5.2 Modal Segue 사용 방법 알아보기 ... 220
PART 3 현장 체험 - 앱 기획부터 개발, 앱스토어 등록 및 수익까지
   1. 앱스토어 등록을 위한 준비 ... 229
      1.1 모바일 브로슈어 앱 Beauty of Korea, Beauty of Korea HD ... 232
      1.2 배포판 빌드를 위한 Distribution Certificate, Provisioning Profile 준비 ... 233
        1.2.1 Distribution Certificate ... 233
        1.2.2 Distribution Provisioning Profile 생성하기 ... 234
      1.3 배포판 빌드를 위한 Xcode 설정 ... 236
        1.3.1 Distribution용 Code Signing 설정하기 ... 236
        1.3.2 Bundle Identifier, 배포용 iOS 버전 및 대상 기기 설정하기 ... 237
        1.3.3 Product Name - 앱 이름 설정하기 ... 238
      1.4 배포판 빌드 및 확인 ... 238
   2. 앱스토어 제출 ... 239
      2.1 iTunes Connect에서 앱 추가하기 ... 240
      2.2 바이너리 업로드 ... 246
      2.3 앱스토어에서 확인하기 ... 248
   3. 앱의 판매, 수익 입금, 마케팅 그리고 업데이트 ... 249
      3.1 앱스토어의 수익 배분은 70:30 ... 250
      3.2 판매 정보와 수익금 보기 ... 251
        3.2.1 Sales and Trends 보기 ... 251
        3.2.2 Payments and Financial Reports 보기 ... 253
      3.3 앱 홍보하기 - 프로모션 코드와 마케팅 리소스 ... 254
        3.3.1 Promotional code 활용하기 ... 254
        3.3.2 마케팅 리소스 활용하기 ... 255
      3.4 앱 업데이트하기 ... 257
PART 4 실전 프로젝트
   프로젝트 1 Abstract Clock ... 259
      1.1 시계 앱을 기획해 보자 ... 260
      1.2 앱의 구조와 UI 디자인 ... 261
        1.2.1 앱의 구조 ... 261
        1.2.2 UI 디자인 스케치 ... 261
      1.3 프로토타입 디자인 & View Controller 클래스 정의 ... 262
      1.4 메인 화면 구현하기 ... 264
        1.4.1 Xcode 실행하여 프로젝트 생성하기 ... 264
        1.4.2 UIImageView를 이용하여 도형 생성하고 보여주기 ... 267
        1.4.3 Core Animation을 활용한 UIView 애니메이션 ... 278
        1.4.4 화면 상단의 Status Bar 없애기 ... 282
      1.5 옵션 설정 화면 구현하기 ... 283
        1.5.1 NSUserDefaults를 이용하여 옵션 값 저장하고 읽어오기 ... 283
        1.5.2 FlipsideViewController에 Table View 구현하기 ... 283
        1.5.3 메인 화면에 옵션 적용하기 ... 295
      1.6 아이콘과 시작화면 추가하기 ... 299
        1.6.1 아이콘 적용하기 ... 299
        1.6.2 시작 화면 적용하기 ... 299
   프로젝트 2 Beauty Of Korea ... 301
      2.1 모바일 브로슈어 앱을 기획해 보자 ... 302
      2.2 앱의 구조와 UI 디자인 ... 303
        2.2.1 앱의 구조 ... 303
        2.2.2 UI 디자인 스케치 ... 303
      2.3 프로토타입 디자인&View Controller 클래스 정의 ... 304
      2.4 프로젝트 셋업하기 ... 306
      2.5 메인 메뉴 화면 RootViewController ... 310
      2.6 유적 소개 화면 ContentViewController ... 317
      2.7 사진 갤러리 화면 GalleryViewController ... 324
      2.8 지도 화면 MapViewController ... 331
      2.9 아이폰 4 고해상도 지원 확인, 아이콘 및 시작화면 추가하기 ... 342
   프로젝트 3 Memo Pad ... 343
      3.1 메모패드 앱을 기획해 보자 ... 344
      3.2 앱의 구조와 UI 디자인 ... 345
        3.2.1 앱의 구조 ... 345
        3.2.2 UI 디자인 스케치 ... 345
      3.3 프로토타입 디자인&View Controller 클래스 정의 ... 346
      3.4 프로젝트 설정과 데이터베이스 준비 ... 349
        3.4.1 Xcode 실행 및 프로젝트 생성 ... 349
        3.4.2 SQLite 데이터베이스 테이블 디자인과 샘플 데이터 준비 ... 351
        3.4.3 데이터베이스 테이블 생성과 샘플 데이터 입력 ... 353
        3.4.4 메모 데이터를 보관할 MemoData 오브젝트 만들기 ... 355
        3.4.5 MemoData 오브젝트를 만들고 DBData 배열에 담기 ... 359
      3.5 메모 목록 보기와 내용 보기 ... 364
        3.5.1 메모 목록 보기 - DBData에서 MemoData를 꺼내 Table view에 표시하기 ... 364
        3.5.2 메모 내용 보기 - MPDetailViewController 클래스 및 UI 디자인 ... 367
        3.5.3 메모 내용 보기 - 목록 보기에서 내용 보기로 넘어가기 ... 374
      3.6 메모 쓰기와 수정하기 ... 380
        3.6.1 메모 쓰기 - WriteViewController 클래스 추가 및 UI 디자인 ... 380
        3.6.2 메모 쓰기 - App Delegate에 write 관련 메소드 추가하기 ... 385
        3.6.3 메모 쓰기 - RootViewController에 메모 쓰기 버튼 달기 ... 387
        3.6.4 메모 쓰기 - WriteViewController 완성하기 ... 390
        3.6.5 메모 수정하기 - EditViewController 클래스 추가 및 UI 디자인 ... 392
        3.6.6 메모 수정하기 - App Delegate에 update 관련 메소드 추가하기 ... 396
      3.7 메모 삭제하기 ... 401
        3.7.1 메모 삭제하기 - App Delegate에 delete 관련 메소드 추가하기 ... 401
        3.7.2 메모 삭제하기 - 삭제 버튼 연결하기 ... 402
      3.8 커스텀 UI를 입히자! ... 404
        3.8.1 Navigation Bar 없애기 ... 405
        3.8.2 메모 목록보기(RootViewController) 디자인 바꾸기 ... 406
        3.8.3 메모 내용 보기(ContentViewController) 디자인 바꾸기 ... 416
        3.8.4 새 메모 쓰기ㆍ수정하기 화면 디자인 바꾸기 ... 421
      3.9 아이콘 설정하기, 시작화면 및 아이폰 4용 고해상도 이미지 추가하기 ... 425
   프로젝트 4 Simple Twit ... 427
      4.1 트위터 클라이언트 앱을 기획해 보자 ... 428
      4.2 SimpleTwit 앱의 구조와 UI 디자인 ... 429
      4.3 프로토타입 디자인&View Controller 클래스 정의 ... 430
      4.4 프로젝트 설정하기 ... 432
      4.5 Storyboard를 이용하여 기본 화면 구성하기 ... 433
        4.5.1 Storyboard의 기본 구조 ... 433
        4.5.2 Root View Controller의 View를 Table View로 대체하기 ... 436
        4.5.3 Table View의 제목 설정하기 ... 437
      4.6 Public Timeline 관련 기능 구현하기 ... 438
        4.6.1 트윗 목록 보기 화면 구성하기 ... 438
        4.6.2 트윗 상세 보기 화면 구성하기 ... 480
      4.7 Home timeline 관련 기능 구현하기 ... 489
      4.8 Mentions 관련 기능 구현하기 ... 513
      4.9 새 트윗 작성 기능 구현하기 ... 521
        4.9.1 플랫폼을 활용하지 않고 새 트윗 작성 기능 구현하기 ... 521
        4.9.2 플랫폼을 활용하여 새 트윗 작성 기능 구현하기 ... 531
   프로젝트 5 Bounced ... 535
      5.1 아이폰/아이팟 터치를 위한 게임을 기획해 보자 ... 536
      5.2 앱의 구조와 UI 디자인 ... 537
        5.2.1 앱의 구조 ... 537
        5.2.2 게임 방식 ... 538
      5.3 UI 요소 및 클래스 정의 ... 539
      5.4 cocos2d 다운로드와 Xcode 프로젝트 템플릿 설치하기 ... 541
      5.5 프로젝트 생성하기 ... 544
        cocos2d의 핵심 개념 정리 - Scene, Director, Layer, Sprite ... 553
      5.6 메인 메뉴 화면(MenuScene) ... 554
        Chipmunk 물리 엔진의 핵심 기본 개념 정리 - Space, Body, Shape ... 557
      5.7 게임 화면(GameScene) ... 561
      5.7.1 게임 초기화 ... 561
      5.8 Apple Game Center를 이용하여 점수를 등록하고 월드 랭킹 공유하기 ... 580
      5.9 게임 오버 화면(GameOverScene) ... 590
   프로젝트 6 Beauty of Korea HD ... 593
      6.1 고해상도 iPad용 브로슈어를 기획해 보자 ... 594
      6.2 앱의 구조와 UI 디자인 ... 595
      6.3 View Controller 클래스 정의 ... 596
      6.4 프로젝트 셋업하기 ... 597
      6.5 메인 메뉴 화면 BoKMasterViewController ... 601
      6.6 유적 소개 화면 BoKDetailViewController ... 607
      6.7 지도 화면 BoKDetailViewController ... 617
      6.8 시작 화면과 아이콘 추가하기 ... 624
      6.9 뉴아이패드용 고해상도 레티나 디스플레이 지원하기 ... 625
   프로젝트 7 iPhone 5 4인치 화면 지원하기 ... 627
      7.1 Abstract Clock ... 628
      7.2 Beauty Of Korea ... 630
      7.3 MemoPad ... 633
      7.4 Typography Insight ... 636
부록 : 유용한 팁들 ... 639
   1. 인증서를 다른 컴퓨터로 옮기고 여러 대에서 개발하기 ... 640
   2. NSLog를 활용하여 디버깅하기 ... 641
   3. Ad Hoc 방식으로 앱 배포하기 ... 642
   4. 아이폰에서 Tab Bar+ Navigation Controller 구조 만들기 ... 644
   5. 아이패드에서 Tab Bar+UISplitView 구조 만들기 ... 649
   6. 아이패드에서 UIPopOverController 사용하기 ... 653
   7. UIKit을 이용한 커스텀 GUI 디자인 ... 655
   8. UIGestureRecognizer로 제스쳐 인식하기 ... 658
   9. 시뮬레이터에 사진 넣기 ... 659
   10. iAd 배너 광고 삽입하기 ... 660
   11. iOS 버전별 클래스/메소드 존재 여부 체크하기 ... 664
   12. 스레드 사용하기 ... 665
색인 ... 669
참고자료 ... 677
경고(Warning) 및 오류(Error) 메시지 처리하기 ... 678
예제 프로젝트 소스코드 다운로드 및 활용방법 ... 679
닫기