시작하세요! 아이패드 프로그래밍

69

Post on 22-Jul-2016

224 views

Category:

Documents


1 download

DESCRIPTION

웨이멍 리 지음 | 유윤선 옮김 | 임베디드 & 모바일 시리즈 _ 009 | ISBN: 9788992939614 | 32,000원 | 2010년 08월 31일 발행 | 798쪽

TRANSCRIPT

Page 1: 시작하세요! 아이패드 프로그래밍
Page 2: 시작하세요! 아이패드 프로그래밍
Page 3: 시작하세요! 아이패드 프로그래밍

시작하세요!

아이패드 프로그래밍

Page 4: 시작하세요! 아이패드 프로그래밍

iv

•목 차•

이 책의 독자층 ..........................................................................................xix

이 책에서 다루는 주제들 .........................................................................xix

이 책의 구조 ..............................................................................................xxi

이 책을 따라하면서 필요한 것들 ........................................................... xxii

관례 ........................................................................................................ xxii

소스 코드 ................................................................................................ xxiii

오탈자 ......................................................................................................xxiv

p2p.wrox.com ..........................................................................................xxv

1부 시작하기

1장 iPad 프로그래밍 시작하기 3iPhone SDK 다운로드하기 ...............................................................................4

iPhone SDK의 구성 요소 ..................................................................................6

Xcode ............................................................................................................6

iPhone 시뮬레이터 ......................................................................................7

인터페이스 빌더 ........................................................................................12

인스트루먼트 .............................................................................................12

iPhone OS의 아키텍처 ................................................................................... 14

시작하기 앞서 알면 도움이 되는 몇 가지 정보들 ....................................... 18

iPhone OS의 버전 .....................................................................................18

실제 기기에서의 테스트 ...........................................................................19

화면 해상도 ................................................................................................20

Page 5: 시작하세요! 아이패드 프로그래밍

v

단일 윈도우 애플리케이션........................................................................21

허용되지 않는 백그라운드 애플리케이션 ...............................................21

요약 ................................................................................................................... 22

2장 첫 번째 Hello World! 애플리케이션 만들기 23Xcode 시작하기 ............................................................................................... 23

인터페이스 빌더 사용하기........................................................................26

화면 방향 전환하기 ...................................................................................31

뷰 위치 조정 ...............................................................................................34

코드 작성하기 ............................................................................................36

애플리케이션 아이콘 커스터마이징하기 ..................................................... 38

요약 ................................................................................................................... 42

3장 뷰, 아웃렛, 액션 45아웃렛과 액션 .................................................................................................. 46

뷰 사용하기 ...................................................................................................... 52

경고 뷰 사용하기 .......................................................................................54

액션 시트 사용하기 ...................................................................................57

페이지 컨트롤과 이미지 뷰.......................................................................59

웹 뷰 사용하기 ...........................................................................................67

코드를 사용해 동적으로 뷰 추가하기 ........................................................... 71

뷰 계층구조 이해하기 ..................................................................................... 75

요약 ................................................................................................................... 77

Page 6: 시작하세요! 아이패드 프로그래밍

vi

4장 뷰 컨트롤러 79뷰 기반 애플리케이션 템플릿 ........................................................................ 80

XIB 파일 편집하기 ....................................................................................83

윈도우 기반 애플리케이션 템플릿 ................................................................ 91

프로그래밍적으로 뷰 컨트롤러와 뷰 추가하기 ......................................99

액션 생성하고 연결하기 .........................................................................103

다른 뷰로 전환하기 .................................................................................106

뷰 전환 애니메이션 .................................................................................109

분할 뷰 기반 애플리케이션 템플릿 ............................................................. 112

분할 뷰 기반 애플리케이션에서 항목 나타내기 ...................................125

탭 바 애플리케이션 템플릿 .......................................................................... 135

요약 ................................................................................................................. 145

5장 키보드 입력 147키보드 사용하기 ............................................................................................ 148

입력 타입 커스터마이징하기 ....................................................................... 150

키보드 사라지게 하기 .............................................................................152

뷰가 로드될 때 키보드 자동으로 보여주기 ...........................................159

키보드 존재 감지하기 ................................................................................... 159

요약 ................................................................................................................. 172

6장 화면 회전 175기기의 회전에 반응하기 ............................................................................... 175

화면 방향의 타입 .....................................................................................179

회전 처리하기 ..........................................................................................180

Page 7: 시작하세요! 아이패드 프로그래밍

vii

프로그래밍적으로 화면 회전시키기 ........................................................... 187

런타임 시에 화면 회전시키기 .................................................................187

로딩시 특정 방향으로 뷰 보여주기 .......................................................188

요약 ................................................................................................................. 189

2부 데이터 표현하고 보관하기

7장 테이블 뷰 사용하기 193단순 테이블 뷰 ............................................................................................... 194

헤더와 푸터 추가하기 .............................................................................202

이미지 추가하기 ......................................................................................202

선택된 아이템 보여주기 .........................................................................205

들여쓰기 ...................................................................................................207

테이블 뷰 사용하기 .................................................................................208

프로퍼티 리스트(Property List) 사용하기 ............................................214

인덱싱 추가하기 ......................................................................................224

검색 기능 추가하기 .................................................................................225

펼쳐보기와 체크 표시 .............................................................................239

요약 ................................................................................................................. 242

8장 애플리케이션 환경설정 245애플리케이션 환경설정 생성하기 ............................................................... 246

환경설정 값에 프로그래밍적으로 접근하기 .............................................. 255

환경설정 값 가져오기 .............................................................................261

환경설정 값 초기화하기 .........................................................................263

환경설정 값 저장하기 .............................................................................263

요약 ................................................................................................................. 265

Page 8: 시작하세요! 아이패드 프로그래밍

viii

9장 파일 처리 267애플리케이션 폴더 이해하기 ....................................................................... 268

Documents와 Library 폴더 사용하기 ...................................................269

임시 폴더에 파일 저장하기.....................................................................274

프로퍼티 리스트 사용하기 ........................................................................... 274

번들 리소스 복사하기 ................................................................................... 282

요약 ................................................................................................................. 284

10장 SQLite3를 사용한 데이터베이스 활용 287SQLite3 사용하기 .......................................................................................... 288

데이터베이스 생성하고 열기 ....................................................................... 290

생성된 데이터베이스 살펴보기 ..............................................................292

테이블 생성하기 ......................................................................................292

레코드 삽입하기 ......................................................................................294

바인드 변수 ..............................................................................................296

레코드 조회하기 ......................................................................................298

애플리케이션에서 SQLite 데이터베이스 번들로 사용하기 ...................... 302

요약 ................................................................................................................. 303

3부 고급 iPad 기술 프로그래밍

11장 간단한 애니메이션 309NSTimer 클래스 사용하기 ........................................................................... 309

애니메이션을 사용한 시각적 변화 .........................................................317

뷰 변형하기 .................................................................................................... 318

위치 변환 ..................................................................................................319

회전 .........................................................................................................320

Page 9: 시작하세요! 아이패드 프로그래밍

ix

스케일링 ...................................................................................................322

여러 이미지에 애니메이션 적용하기 .......................................................... 323

요약 ................................................................................................................. 326

12장 제스처 인식하기 329제스처 인식하기 ............................................................................................ 329

탭하기(Tapping) ......................................................................................330

핀치 .........................................................................................................336

회전 .........................................................................................................339

팬 (또는 드래그) ......................................................................................342

스와이프 ...................................................................................................346

오래 누르기 ..............................................................................................351

터치 감지하기 ................................................................................................ 356

싱글 터치 감지하기 .................................................................................357

멀티터치 감지하기 ..................................................................................363

핀치 제스처 구현하기 .............................................................................366

드래그 제스처 구현하기 .........................................................................373

요약 ................................................................................................................. 376

13장 가속도계 접근하기 379가속도계 사용하기 ........................................................................................ 379

가속도계를 사용해 iPad의 흔들림 감지하기 ........................................384

Shake API를 사용해 흔들림 감지하기 ........................................................ 385

기기 흔들림에 따라 반응하기 .................................................................392

요약 ................................................................................................................. 393

Page 10: 시작하세요! 아이패드 프로그래밍

x

4부 네트워크 프로그래밍 기술

14장 웹 서비스 397XML 웹 서비스 처리의 기본 ........................................................................ 398

SOAP 1.1 사용하기 .................................................................................398

HTTP/1.1 200 OK ..................................................................................400

SOAP 1.2 사용하기 .................................................................................401

HTTP GET 사용하기 .............................................................................401

HTTP POST 사용하기 ...........................................................................402

iPad 애플리케이션에서 웹 서비스 처리하기.............................................. 403

HTTP POST를 사용해 웹 서비스와 통신하기 .......................................... 411

HTTP GET을 사용해 웹 서비스와 통신하기 .......................................412

XML 응답 파싱하기 ...................................................................................... 413

요약 ................................................................................................................. 418

15장 블루투스 프로그래밍 421Game Kit 프레임워크 사용하기 .................................................................. 422

다른 기기 찾기 .........................................................................................422

데이터 전송하기 ......................................................................................430

음성 채팅 구현하기 ....................................................................................... 432

요약 ................................................................................................................. 442

16장 봉쥬르 프로그래밍 443애플리케이션 생성하기 ................................................................................ 443

서비스 퍼블리싱하기 .................................................................................... 446

서비스 찾기 .................................................................................................... 448

요약 ................................................................................................................. 455

Page 11: 시작하세요! 아이패드 프로그래밍

xi

17장 애플 푸시 통보 서비스 457인증 요청 생성하기 ....................................................................................... 458

개발자 인증서 생성하기 ............................................................................... 460

App ID 생성하기 ........................................................................................... 463

푸시 통보를 위해 App ID 설정하기 .....................................................465

프로비저닝 프로파일 생성하기 ..............................................................468

기기 프로비저닝하기 ..............................................................................470

iPad 애플리케이션 생성하기 ....................................................................... 470

푸시 통보 프로바이더 생성하기 .................................................................. 475

요약 ................................................................................................................. 479

18장 지도 보여주기 481Map Kit를 사용해 지도 보여주고 변화 모니터링하기 .............................. 481

위치 데이터 가져오기 ................................................................................... 488

지도를 사용해 위치 표시하기 .................................................................495

방향 정보 가져오기 .................................................................................500

지도 회전시키기 ......................................................................................505

애노테이션 보여주기 ..............................................................................511

리버스 지오코딩 ......................................................................................518

펼쳐보기 버튼 보여주기 .........................................................................522

요약 ................................................................................................................. 526

Page 12: 시작하세요! 아이패드 프로그래밍

xii

5부 부록

부록A 예제에 대한 정답 531

부록B Xcode 익히기 545Xcode 실행하기 ............................................................................................. 545

지원하는 프로젝트 타입 .........................................................................546

툴바 커스터마이징 ..................................................................................549

코드 센스 ..................................................................................................550

애플리케이션 실행하기 ..........................................................................551

애플리케이션 디버깅하기 ............................................................................ 551

에러 .........................................................................................................551

경고문 .......................................................................................................552

브레이크포인트 설정하기.......................................................................553

NSLog 사용하기 ......................................................................................555

문서 556

부록C 인터페이스 빌더 익히기 557.xib 윈도우 ..................................................................................................... 557

뷰 디자인하기 ................................................................................................ 558

인스펙터 윈도우 ............................................................................................ 560

어트리뷰트 인스펙터 윈도우 ..................................................................561

커넥션 인스펙터 원도우 .........................................................................561

사이즈 인스펙터 윈도우 .........................................................................561

아이덴티티 인스펙터 윈도우 ..................................................................562

라이브러리 ..................................................................................................... 562

아웃렛과 액션 ................................................................................................ 563

Page 13: 시작하세요! 아이패드 프로그래밍

xiii

아웃렛과 액션 생성하기 .........................................................................563

아웃렛과 액션 연결하기 .........................................................................566

부록D Objective-C 속성 코스 571지시자 ............................................................................................................. 572

클래스 ............................................................................................................. 572

@interface ................................................................................................572

@implementation ....................................................................................573

@class ........................................................................................................574

클래스 인스턴스화 ..................................................................................576

필드 .........................................................................................................576

접근 권한 ..................................................................................................577

메서드 .......................................................................................................578

메시지 전송(메서드 호출) ......................................................................580

속성 .........................................................................................................582

초기화자 ...................................................................................................585

메모리 관리 .................................................................................................... 588

레퍼런스 카운팅 ......................................................................................588

프로토콜 ......................................................................................................... 597

델리게이트 ...............................................................................................598

셀렉터 ............................................................................................................. 600

카테고리 ......................................................................................................... 601

찾아보기.............................................................................604

Page 14: 시작하세요! 아이패드 프로그래밍

xiv

내 가족에게:

이 책을 준비하는 동안 나를 이해해 주고 지원해 준 가족에게 감사 드린다.

모두 사랑해요!

Page 15: 시작하세요! 아이패드 프로그래밍

xv

옮긴이 서문

이 책은 iPhone SDK 3.2 베타 버전이 나온 시점부터 집필된 책으로, iPhone SDK 3.2를 사용해 아이

패드 애플리케이션을 개발하는 방법을 가장 쉽게 설명하고 있는 책이다. 특별히 저자는 독자들이 쉽

게 이해할 수 있도록 따라하기 방식의 설명을 통해, 예제 결과를 먼저 확인하고 이어서 예제에 사용된

원리를 하나씩 이해할 수 있도록 배려하고 있다. 이 책은 기존에 iPhone SDK를 사용해 본 경험이 없

는 개발자들뿐 아니라 기존 iPhone 애플리케이션 개발자들도 쉽게 볼 수 있는 책이다. 기존에 iPhone

애플리케이션을 개발해 본 경험이 없는 독자라면, 부록에 있는 내용들을 먼저 확인하는 게 좋다. 그

러고 나서 이 책에 사용된 예제들을 따라한다면 이해하는 데 큰 무리가 없을 것이다. 그리고 기존에

iPhone 애플리케이션을 개발해 본 독자라면, 바로 예제를 따라하는 과정을 시작해 iPhone 애플리케

이션을 iPad 애플리케이션을 포팅하는 데 필요한 기술이나 iPad에서 전용으로 사용되는 기술들을 확

인해 볼 수 있다.

이 책의 집필 시점 및 테스트 시점은 iPhone SDK 3.2 베타가 출시된 시점으로, 현재와는 다소 차이

가 있다. 이로 인해 역자는 책의 코드를 iPhone SDK 3.2 정식 버전으로 모두 테스트해 보고 필요한 부

분에 주석을 달았다. 아울러 이 책과 관련한 위키북스 사이트를 통해 3.2 버전의 책 예제를 제공하도

록 했다. 그럼에도 불구하고 예제를 따라하다가 궁금한 점이 생긴다면, 아래 필자의 개인 블로그에 질

문을 남겨주기 바란다.

http://joshy21.com/weblog

감사의 글

먼저 이 책을 번역할 수 있게 해 준 위키북스에 감사한다. 역자의 역량이 모자람에도 불구하고 역자를

믿어주고 이 책을 맡겨 준 데에 대해 감사 드리고 앞으로 더 좋은 번역으로 보답드릴 것을 약속한다.

이 책에 베타리더로 참여해 주신, 성종천님과 홍동복님께 감사를 드린다. 홍동복님은 소스 코드 오류

나 주석, 번역 용어에 대해 조언을 아끼지 않았고, 성종천님은 역자의 부족한 책에 모두 베타리더로 참

석해 주시는 정성을 보여 주셨다. 이 자리를 빌어 두 분께 모두 감사를 드린다.

마지막으로 항상 나와 함께 하시는 하나님, 곁에서 내게 항상 힘이 되어주는 가족들, 아버지, 어머

니, 형에게 감사와 사랑을 전한다.

- 유윤선

Page 16: 시작하세요! 아이패드 프로그래밍

xvi

지은이 소개

웨이멍 리 (Wei-Meng Lee)

웨이멍 리는 마이크로소프트 및 Mac OS X 최신 기술에 대한 교육 서비스를 전문으로 하는 Developer

Learning Solutions(www.learn2develop.net)의 기술자이자 설립자이다. 웨이멍 리는 Wrox와

O’Reilly 출판사의 중견 저자이기도 하다.

웨이멍 리는 싱가포르에서 iPhone 프로그래밍 교육을 처음으로 시작했고 현재까지 긍정적인 평가

를 받고 있다. iPad/iPhone 프로그래밍에 대한 그의 이해하기 쉬운 접근 방식은 책이나 튜토리얼, 애

플에서 나온 문서 등을 읽는 것보다 독자들이 핵심 주제를 더 쉽게 이해할 수 있도록 도와준다.

저자에게 연락하려면 [email protected] 이메일 계정으로 메일을 보내면 된다.

기술 감수

트렌트 슈메이 (Trent Shumay)

트렌트 슈메이는 밴쿠버 BC 지역에 위치한 Finger Food Studios의 설립자이자 수석 설계자이다.

UBC(University of British Columbia) 대학에서 컴퓨터 공학을 전공한 후, 트렌트 슈메이는 게임과

인터렉티브 엔터테인먼트 분야에서 13년간 근무했다. 그 과정에서 그는 모바일 게임 기기들이 주는 재

미에 푹 빠지게 되었고, 모바일 개발에 대한 열정을 품게 되었다. 현재 Finger Food Studios는 리치 미

디어, 인터랙티브 모바일, 웹 애플리케이션 개발 등에 주력하고 있다. 트렌트에게 연락하려면, trent@

�ngerfoodstudios.com으로 이메일 계정으로 메일을 보내면 된다.

Page 17: 시작하세요! 아이패드 프로그래밍

xvii

감사의 말

2010년 1월 27일 아침, 스티브 잡스는 애플의 다음 번 킬러 기기가 될 것이라는 오랜 루머의 대상이 되

었던 바로 그 기기, iPad를 발표했다. 이제 iPad가 세상에 나왔으므로, 개발자들은 너나 할 것 없이 다

음 번 킬러 애플리케이션을 만들기 위해 벌 떼처럼 몰려들고 있다.

iPhone 개발 책에 대한 집필을 끝내고, 이 책의 집필을 시작한 건 내게 당연한 수순이었다. iPad도

마찬가지로 iPhone OS를 기반으로 하고 있기 때문에, iPad 개발에 대한 책을 집필하는 과정은 그리

어렵지 않아 보일 수 있다. 하지만 아무리 익숙한 주제라 하더라도, 책을 쓰는 데는 항상 많은 노력이

뒤따르고, 그 점에서 이 책도 예외는 아니다. 이제 이 책이 비로소 모두 완성되었으니, 이 자리를 빌어

서 이 책이 나오기까지 수고해 주신 많은 분들께 감사의 말을 전하고 싶다.

우선 나를 믿어주고 이 책에 대한 집필을 허락해 준 스콧 마이어스 씨에게 감사를 드린다. 이 책이

세상에 나오기까지 스콧 마이어스 씨가 겪은 많은 스트레스를 나는 익히 잘 알고 있다. 이 책이 스콧

의 그런 수고에 보답할 수 있는 책이 되었으면 좋겠다. 스콧씨 감사합니다.

다음으로, 이 책을 집필하면서 항상 즐겁게 일을 도와준 이 책의 편집자 애이미 설리반 씨에게 감사

를 드린다. 특별히 이 책이 나오는 순간까지 수고해준 그녀의 인내에 깊이 감사한다. 그녀가 없었다면

아마 이 책은 지금 여러분에 손에 쥐어지지 못했을 것이다. 애이미, 이 점에 있어서 제 깊은 감사를 받

아주세요. 그리고 책이 나올 때가지 계속 지도해 주신 부분 감사드립니다!

이 책이 나오기까지 보이지 않는 곳에서 수고해 주신 분들께도 감사의 인사를 전하지 않을 수 없다.

교열을 담당해 주신 매리언 슈테인하트와 기술 편집을 담당해 주신 트렌톤 슈메이 씨게 감사를 드린

다. 이 분들은 매의 눈과 같은 날카로운 눈으로 책의 편집을 도와주셨고, 책의 한 문장 한 문장이 문법

적으로나 기술적으로 의미가 분명히 전달되도록 수고해 주셨다. 매리언과 트렌트 씨 모두 감사를 드립

니다!

마지막으로 항상 나를 믿어주고 도와주는 나의 부모님과, 아내인 쓰 와에게 감사를 드린다. 부모님

과 아내는 내가 이 책을 집필하는 동안 나의 바쁜 스케줄에 맞춰 자신들의 스케줄을 기꺼이 희생해

주었다. 내가 책의 기일을 맞추기 위해 밤샘 작업을 할 때도 아내는 수없이 많은 밤을 나와 함께 뜬 눈

으로 지새며 내 곁을 지켜주었다. 이런 아내와 부모님들께 감사의 인사를 전한다. “모두 사랑합니다!”

끝으로, 내 옆을 지켜주는 내 사랑스러운 강아지 오오키에게도 감사를 전한다. 오오키야, 이제 비로소

책이 완성되었으니, 너도 나도 일찍 잠자리에 들 수 있겠구나.

Page 18: 시작하세요! 아이패드 프로그래밍

xviii

시 작 하 면 서

2010년 1월 27일 애플은 마술 또는 혁명이라고 부를 만한 제품을 발표했다. 바로 iPad다. iPad는

iPhone OS를 기반으로 하는 태블릿 컴퓨터다. 이 말은, 하룻밤 사이에 무려 150,000개 이상의 애플리

케이션을 실행할 수 있는 iPad라는 태블릿 컴퓨터가 나왔다는 말이다. iPad 프로그래밍은 iPhone 프

로그래밍과 매우 유사하다. 다만 iPad 프로그래밍 시에는 다음과 같이 iPad에 특화된 기능들이 사용

가능하다는 차이점이 있을 뿐이다.

새로운 분할 뷰 기반 애플리케이션 템플릿과 새로운 팝 오버 뷰의 도입. 이 두 주제에 대해서는 1.

모두 4장에서 다루고 있다.

새로운 제스처 인식기. 12장에서 다룬다. 2.

필자가 처음 iPhone이나 iPad 프로그래밍을 시작했을 때 필자 또한 다른 대부분의 개발자들이 겪

는 과정을 그대로 겪었다. 우선 Hello World 프로그램을 만들어 보고, 인터페이스 빌더를 만지작거린

후 코드의 의미를 파악하려고 노력했다. 그리고 이 과정들을 반복하면서 코드를 익혔다. 또한 뷰 컨트

롤러의 개념을 이해하는 데 애를 먹었고 단순히 뷰를 보여주는데 뷰 컨트롤러가 왜 필요한지 의아해

했다. Windows 모바일이나 안드로이드 프로그래밍을 했던 경험은 크게 도움이 안 됐다. 필자의 경우,

처음부터 개념을 하나씩 새로 익혀야 했다.

이 책은 iPad 개발을 시작하는 개발자들을 위한 책이다. 이 책에서는 독자들이 다양한 주제를 자연

스럽게 하나씩 익히도록 설명하고 있으며, 지나치게 많은 내용들을 한 번에 소개해 독자들이 부담을

느끼지 않도록 배려하고 있다. 가장 쉽게 배울 수 있는 길은 실제 경험을 통해서 배우는 것이라는 생각

을 바탕으로 모든 장에 걸쳐 ‘따라하기’ 절을 두고있다. ‘따라하기’ 절에서는 먼저 예제를 만드는 법을

보여주고, 이어서 동작 원리를 설명하고 있다.

iPad 프로그래밍은 꽤 큰 주제에 속하지만, 이 책에서는 여러분이 기본적인 내용들을 익히고 기본

이 되는 SDK의 구조를 이해한 후, 왜 특정 방식으로 어떤 것들이 동작하는지 알 수 있도록 하는 것을

목표로 하고 있다. 이 책은 iPad 프로그래밍과 관련한 모든 주제를 다루는 책은 아니지만, 이 책을 다

읽고 나면 (아울러 예제를 모두 따라해 보고 나면) 실제 iPad 프로그래밍 업무에 대처할 수 있는 기초

체력을 키울 수 있을 것이라 확신한다.

Page 19: 시작하세요! 아이패드 프로그래밍

xix

이 책의 독자층

이 책은 애플 iPhone SDK를 사용해 iPad 애플리케이션 개발을 시작하는 독자들을 위한 책이다. 이

책을 제대로 활용하려면, 여러분은 먼저 프로그래밍에 대한 배경 지식과 함께 객체 기반 프로그래밍

에 대한 이해가 있어야 한다. Objective-C 언어를 처음 사용하는 개발자라면 이 언어에 대해 간략히

설명하고 있는 부록 D를 먼저 읽어보는 것이 좋다. 부록 D는 이 책의 여러 장들을 공부하면서 예제를

따라하는 과정에서 문법을 이해하는 데 참고 문서로 활용할 수도 있다. 여러분의 학습 패턴에 따라 조

금 차이가 있을 수 있지만, 위의 두 방식 중 하나를 택하면 여러분에게 많은 도움이 될 것이다.

이 책에서 다루는 주제들

이 책에서는 iPhone SDK를 사용한 iPad 프로그래밍의 기본 지식을 다루고 있다. 이 책은 18개의 장

과 네 개의 부록으로 이루어져 있다.

1장 : ‘iPad 프로그래밍 시작하기’에서는 iPhone SDK에서 사용하는 다양한 도구와 함께 iPad 개발

과정에서 이들 도구가 어떻게 쓰이는지 설명한다.

2장 : ‘첫 번째 Hello World! 애플리케이션 만들기’에서는 Xcode와 인터페이스 빌더를 사용해

Hello World 애플리케이션 제작을 시작할 수 있도록 해 준다. 이 장의 초점은 여러분이 실제 손을

바쁘게 사용해 코드를 짜보도록 하는 데 있다. 이 장에서 보게 되는 다양한 부분들과 구성 요소들

에 대해서는 이어지는 장들에서 설명한다.

�3장 : ‘뷰, 아웃렛, 액션’에서는 iPad 프로그래밍의 핵심 개념에 해당하는 아웃렛과 액션에 대해서 설

[참고] 이 책에서 다루고 있는 모든 예제들은 iPhone SDK 3.2 베타 3 버전을 사용해 작성되고 테

스트되었다. 애플에서는 여전히 SDK의 이름을 iPhone SDK라고 부르고 있지만, 이 SDK는 실제

로 iPhone, iPod 터치, iPad 애플리케이션을 만드는 데 모두 활용할 수 있다. 이 책을 쓰고 있는

현 시점 (2010년 3월) 기준으로, 애플에서는 ‘iPhone 시뮬레이터’ 1 라는 용어를 사용해 iPhone과

iPad 시뮬레이터를 함께 지칭하고 있다. 이 책에 사용된 캡쳐 화면은 가장 최신 화면을 담으려고 노

력했지만, iPhone SDK 정식 버전이 나오고 실제 여러분이 보게 될 화면과는 조금 차이가 있을 수

있다.

1   (옮긴이) 2010년 7월 현재, iPhone SDK의 버전은 4.0.1 정식 버전과 함께 4.1 베타 버전까지 출시되었다. 아울러 Xcode

에서는 iPhone 시뮬레이터라는 용어를 사용해 iPhone/iPod 터치/iPad 시뮬레이터를 통틀어 지칭한다.

Page 20: 시작하세요! 아이패드 프로그래밍

xx

명한다. 이 장에서는 아웃렛과 액션을 사용해 코드가 인터페이스 빌더의 시각적인 요소들과 어떻게

상호작용하게 하는지, 또 모든 iPad 애플리케이션에서 아웃렛과 액션이 왜 핵심 역할을 하는지 설

명한다. 또한 이 장에서는 iPad 애플리케이션의 사용자 인터페이스를 구성하는 뷰라고 부르는 다양

한 UI 위젯들에 대해서도 살펴본다.

4장 : ‘뷰 컨트롤러’에서는 iPhone SDK에서 사용할 수 있는 다양한 뷰 컨트롤러를 다룬다. 이 장

에서는 탭 바 애플리케이션뿐 아니라 뷰 기반, 윈도우 기반, 분할 뷰 기반 애플리케이션 등 다양한

iPad 애플리케이션들을 개발하는 법을 다룬다.

5장 : ‘키보드 입력’에서는 iPad의 가상 키보드를 다루는 법을 보여준다. 이 장에서는 필요에 따라

키보드를 감추는 법과 키보드가 나타날 때 뷰가 가려지지 않도록 하는 법을 다룬다.

6장 : ‘화면 회전’에서는 기기가 회전할 때 애플리케이션 UI의 방향을 조정하는 법을 보여준다. 또,

기기가 회전할 때 발생하는 다양한 이벤트들에 대해서 설명한다. 아울러 애플리케이션이 특정 방향

으로만 보여지도록 강제하는 법에 대해서도 다룬다.

7장 : ‘테이블 뷰 사용하기’에서는 iPhone SDK의 가장 강력한 뷰 중 하나인 테이블 뷰에 대해서 살

펴본다. 테이블 뷰는 여러 데이터 행을 보여주는 데 주로 사용된다. 이 장에서는 테이블 뷰에서 검색

기능을 구현하는 법에 대해서도 설명한다.

8장 : ‘애플리케이션 환경설정’에서는 애플리케이션 설정을 사용해 애플리케이션 환경설정을 유지

하는 법을 보여준다. 애플리케이션 환경설정을 사용하면 iPad에서 사용할 수 있는 설정 애플리케이

션을 통해 애플리케이션과 관련한 환경설정에 접근할 수 있다.

9장 : ‘파일 처리’에서는 애플리케이션의 샌드박스 디렉터리에 파일을 저장해 애플리케이션 데이터

를 보관하는 법을 보여준다. 이 장에서는 또 애플리케이션의 샌드박스 내에 위치한 다양한 폴더들

에 접근하는 법에 대해서도 설명한다.

10장 : ‘SQLite3를 통한 데이터 베이스 활용’에서는 임베디드 SQLite3 데이터베이스 라이브러리를

사용해 데이터를 저장하는 법에 대해서 보여준다.

11장 : ‘간단한 애니메이션’에서는 iPad에서 간단한 애니메이션을 구현하는 데 사용할 수 있는 다

양한 기술들에 대해서 설명한다. 이 장에서는 iPhone SDK에서 지원하는 아핀 변환에 대해서도

다룬다.

12장 : ‘제스처 인식하기’에서는 기기에서 사용자가 입력한 제스처를 이해할 수 있도록 iPhone SDK

에서 제공하는 다양한 제스처 인식기에 대해서 설명한다.

Page 21: 시작하세요! 아이패드 프로그래밍

xxi

13장 : ‘가속도계 접근하기’에서는 iPad에 들어있는 가속도계에 접근하는 법을 보여준다. 이 장에서

는 또한 기기를 흔드는 동작을 파악하는 법에 더해서도 배울 수 있다.

14장 : ‘웹 서비스에서’는 iPad 애플리케이션에서 웹 서비스를 사용하는 법을 설명한다. 이 장에서는

SOAP, HTTP GET, HTTP POST와 같은 웹 서비스와 통신할 수 있는 다양한 방법을 소개한다. 아

울러 웹 서비스에서 반환하는 XML 결과를 파싱하는 법에 대해서도 다룬다.

15장: ‘블루투스 프로그래밍’에서는 Game Kit 프레임워크를 통해 블루투스 프로그래밍을 하는 법

을 설명하고 있다. 이 장에서는 블루투스 커넥션을 통해 두 대의 iPad가 서로 통신하는 법을 배울

수 있다. 또 이러한 블루투스 커넥션을 사용해 채팅을 구현하는 법에 대해서도 다룬다.

16장 : ‘봉쥬르 프로그래밍’에서는 봉쥬르 프로토콜을 사용해 네트워크에 서비스를 퍼블리싱하는

법을 보여주고 있다.

17장 : ‘애플 푸시 통보 서비스’에서는 푸시 통보를 구현하는 애플리케이션을 만드는 법을 설명하고

있다. 이러한 애플 푸시 통보 서비스를 사용하면 애플리케이션이 실행되지 않는 동안에도 애플리케

이션에서 서비스 제공자로부터 상태 업데이트 정보를 계속 받을 수 있다.

18장 : ‘지도 보여주기’에서는 Map Kit 프레임워크를 사용해 위치 기반 서비스를 개발하는 법을 보

여준다. 이 장에서는 지리적 위치 정보 데이터를 얻는 법과 이 데이터를 지도에 표시하는 법에 대해

서 설명한다.

부록�A: ‘연습문제에 대한 정답’에서는 1장을 제외한 모든 장의 말미에서 제공하고 있는 예제에 대

한 정답을 보여준다.

부록�B: ‘Xcode 익히기’에서는 Xcode의 다양한 기능들을 간략히 설명한다.

부록�C: ‘인터페이스 빌더 익히기에서는 인터페이스 빌더의 다양한 기능들을 설명한다.

부록�D: ‘Objective-C 속성 코스’에서는 Objective-C에 대한 속성 코스를 제공한다. Objective-C

언어를 처음 접하는 독자들은 시작에 앞서 이 장을 먼저 읽는 것이 좋다.

이 책의 구조

이 책은 iPad 프로그래밍을 배우는 단계를 여러 개의 작은 주제로 세분화해, 여러분이 더 복잡한 주

제를 해결하기 전에 각 주제에 대해 미리 충분히 이해할 수 있도록 하고 있다. 아울러 일부 장에서는

이전 장에서 설명한 주제에 대해서 다시 설명하고 있는데, 이렇게 하는 이유는 Xcode와 인터페이스

Page 22: 시작하세요! 아이패드 프로그래밍

xxii

빌더를 사용하는 방식에는 여러 가지가 있기 때문이다. 따라서 이러한 설명 방식을 통해 이 책에서는

여러분이 iPad 애플리케이션을 개발하는 다양한 기술을 익힐 수 있도록 돕고 있다.

iPad 애플리케이션을 처음 개발해 보는 개발자라면 1장과 2장부터 시작하는 것이 좋다. 이 장들을

모두 마쳤다면 부록으로 이동해 개발에 사용하는 도구와 언어에 대해서 익히는 것이 좋다. 모든 준비

가 끝나면 이어서 3장부터 시작해 점차 고급 주제로 나아가도록 하자.

이 책의 특징 중 하나는 각 장의 모든 소스 코드 샘플이 이전 장의 예제와 독립적으로 구성된다는

점이다. 이를 통해 이 책에서는 여러분이 관심있는 주제를 언제든 펼쳐보고, 따라하기 프로젝트를 실

행해 볼 수 있도록 하고 있다.

이 책을 따라하면서 필요한 것들

이 책에 사용된 거의 대부분의 예제들은 (iPhone SDK와 함께 제공되는) iPhone 시뮬레이터에서 돌

아간다. 하지만 (가속도계와 같은) 하드웨어에 접근하는 예제들을 실행하려면 실제 iPad가 필요하다.

일반적으로 말해, (물론 앱스토어에 애플리케이션을 올릴 계획이라면 테스트 목적으로 꼭 필요하겠

지만 1 ) 이 책의 내용들을 따라 하는데 iPad 기기가 꼭 필요한 것은 아니다.

관례

내용을 보다 쉽게 설명하고 책의 내용을 잘 따라올 수 있도록, 이 책에서는 여러 가지 관례를 정해 사

용하고 있다.

다음은 여러분이 따라하게 될 예제들이다.따라하기

따라하기 예제들은 장마다 하나 이상 제공되며, 여러분이 책의 내용을 따라할 수 있도록 하고 있다.

따라하기 예제들은 보통 여러 개의 숫자로 단계를 표시하고 있다. 1.

프로젝트 파일 복사본으로 이 단계들을 따라 진행한다. 2.

1   (옮긴이) 애플에서는 앱스토어에 애플리케이션을 배포하는 단계에서 실제 기기에 대한 테스트를 진행하는 게 아니라 애플리케이션

설계 초기 단계부터 기기를 사용한 테스트 방식을 권장하고 있다.

Page 23: 시작하세요! 아이패드 프로그래밍

xxiii

동작 원리

따라하기 예제 다음에는 여러분이 타이핑한 코드에 대해 하나씩 자세히 설명한다.

텍스트에 적용된 다른 관례들은 다음과 같다.

키보드 조합은 다음과 같이 처리한다 : Ctrl -R.

코드 서체는 다음과 같이 처리한다 : persistence.properties

코드는 두 방식으로 표현한다.

강조하지 않는 대부분의 코드 예제에는 모노 폰트를 사용한다 : UIWevView

내용상 강조해야 하는 코드에는 볼드체를 사용한다 : UIWevView

[주의] 설명하는 내용과 관련된 잊지 말아야 할 정보들은 ‘주의’ 상자를 통해 표시한다.

[참고] ‘참고’ 상자에서는 현재 설명하고 있는 내용과 관련된 참고, 팁, 힌트, 트릭, 덧붙임말 등을

보여준다.

[흔한 실수] ‘흔한 실수’ 상자에서는 처음 코딩하는 사람들이 저지르기 쉬운 실수들을 피하는 법을

보여준다.

소스 코드

이 책의 예제들을 따라하면서 여러분은 전체 소스 코드를 모두 직접 타이핑할 수도 있고 책과 함께 제

공되는 소스 코드를 사용할 수도 있다. 이 책에 사용된 모든 소스 코드는 www.wrox.com에서 다운로

드할 수 있다. 이 사이트에서 (검색 상자를 사용하거나 책 리스트에서 선택해) 이 책 제목에 해당하는

위치를 찾은 후 책의 상세정보 페이지에서 Download Code 링크를 클릭하면 책의 전체 소스 코드를

얻을 수 있다. 웹사이트에서 다운로드를 위해 제공하는 코드에는 아래 아이콘과 함께 아래와 같은 안

내 문구가 표시되어 있다.

Wrox.com에서다운로드 가능

Page 24: 시작하세요! 아이패드 프로그래밍

xxiv

제공되는 예제에는 제목에 파일명이 포함되어 있다. 단순 코드 샘플인 경우에는 다음과 같은 파일

명으로 코드를 표시한다.

예제 소스 코드 파일이름

코드를 다운로드한 다음에는 원하는 압축 프로그램을 사용해 이를 압축 해제하면 된다. 위에서 소

개한 방식 외에 Wrox 출판사에서 출간하는 이 책 및 다른 책들에 대한 소스 코드를 다운로드하려면,

www.wrox.com/dynamic/books/download.aspx를 방문하면 된다.

위키북스 홈페이지 www.wikibook.co.kr에서도 『시작하세요! 아이패드 프로그래밍』 표지를 클릭

하면 소스 코드를 다운로드할 수 있는 메뉴가 있다.

오탈자

우리는 이 책의 내용이나 코드에 오류가 없도록 모든 노력을 다 했다. 하지만 사람은 완벽하지 않기 때

문에 실수가 있을 수 있다. 이 책에서 내용의 철자 오류나 잘못된 코드와 같은 오류를 발견하거든 우리

에게 피드백을 주면 고맙겠다. 이렇게 오탈자를 보내주면 다른 독자가 몇 시간 동안 헤멜 수 있는 일을

막을 수도 있고 우리가 더 양질의 정보를 제공하는 데도 도움이 된다.

이 책의 오탈자 페이지는 www.wrox.com에서 책의 제목으로 검색하거나 책 목록에서 이 책을 선택

해 책 페이지로 이동하면 찾을 수 있다. 이 책의 페이지에서 Errata링크를 클릭하면 오탈자 페이지로

이동이 가능하다. 오탈자 페이지에서는 이 책에 대해 독자들이 신고한 모든 오탈자와 함께 Wrox 편집

자들이 게재한 오탈자들이 모두 나와있다. 각 책의 오탈자 페이지를 포함해, 전체 책에 대한 링크 페이

지는 www.wrox.com/misc-pages/booklist.shtml에서도 볼 수 있다.

[참고] 대부분의 책이 서로 제목이 비슷하기 때문에, ISBN으로 책을 검색하는 방식이 가장 쉬울

것이다. 이 책의 ISBN은 978-0-470-64165-1이다.

‘여러분이 발견한’ 오탈자를 이 책의 오탈자 페이지에서 찾을 수 없으면 www.wrox.com/contact/

techsupport.shtml로 이동한 후 양식을 작성해 발견한 오탈자를 우리에게 신고해주기 바란다. 여러분

이 보낸 정보를 확인한 후, 올바른 정보로 판단되면 책의 오탈자 페이지에 관련 내용을 싣고 책의 개정

판에서는 해당 문제를 수정하도록 할 것이다.

번역서에 대한 오류는 [email protected]이나 www.wikibook.co.kr의 게시판에 올려주

길 바란다.

Page 25: 시작하세요! 아이패드 프로그래밍

xxv

p2p.wrox.com

책의 저자 및 다른 개발자들과 대화하려면 p2p.wrox.com에서 P2P 포럼에 가입하기 바란다. 이 포럼

은 웹 기반 시스템으로 Wrox 출판사의 책들이나 관련 기술에 대해 메시지를 남길 수 있고, 다른 독자

들이나 기술 사용자들과 대화할 수 있는 공간이다. 이 포럼에서는 구독 기능을 제공해, 포럼에 여러

분이 관심있는 주제에 대해 새로운 글이 올라올 경우 이메일로 알려주도록 하고 있다. 이 포럼에서는

Wrox 출판사의 저자들과 편집자들, 다른 산업 분야의 전문가들 및 여러분의 동료 독자들이 모두 활

동하고 있다.

http://p2p.wrox.com에는 이 책을 읽을 때 뿐 아니라 여러분이 애플리케이션을 개발하면서 도움을

받을 수 있는 여러 포럼들이 있다. 포럼에 가입하려면 다음 절차를 따르면 된다.

p2p.wrox.com로 이동해 Register 링크를 클릭한다.1.

사용 약관을 확인하고 Agree를 클릭한다.2.

가입을 위한 필수 정보 항목을 모두 작성하고, 제공하고자 하는 선택 정보 항목을 모두 고른 3.

후, Submit을 클릭한다.

계좌를 활성화하고 가입 절차를 마치는 방법을 설명하는 이메일을 받게 될 것이다4.

포럼 가입 후에는 새로운 메시지를 올리거나 다른 사용자가 올린 메시지에 답할 수 있다. 메시지는

웹상에서 언제든 확인할 수 있다. 특정 포럼에 세 메시지가 올라올 때마다 이메일로 메시지를 전송

받으려면 포럼 목록에 나와있는 포럼 이름 옆에 있는 Subscribe to �is Forum 아이콘을 클릭하면

된다.

Wrox P2P 사용과 관련한 보다 자세한 사항에 대해서는 P2P FAQs를 참고하도록 하자. P2P FAQs

에는 포럼 소프트웨어가 사용법과 함께 P2P와 Wrox 출판사 책들에 대한 여러 기본 질문들에 대한

답변이 소개되어 있다. FAQs를 확인하려면 P2P 페이지에서 FAQ 링크를 클릭하면 된다.

Page 26: 시작하세요! 아이패드 프로그래밍

Begi

nnin

g iP

ad

Appl

icat

ion

Dev

elop

men

t

Page 27: 시작하세요! 아이패드 프로그래밍

제 1 부

시작하기

1장 : iPad 프로그래밍 시작하기

2장 : 첫 번째 Hello World! 애플리케이션 만들기

3장 : 뷰, 아웃렛, 액션

4장 : 뷰 컨트롤러

5장 : 키보드 입력

6장 : 화면 회전

Page 28: 시작하세요! 아이패드 프로그래밍

2

Page 29: 시작하세요! 아이패드 프로그래밍

3

01iPad 프로그래밍 시작하기

iPad 프로그래밍 세계에 입문한 것을 환영한다! 지금 여러분의 손에 이 책이 쥐어져 있다는 사실은 여

러분이 iPad 애플리케이션을 개발할 생각에 사로잡혀 있고 이미 앱스토어에 애플리케이션을 개발해

배포한 수만 명의 다른 iPad 개발자들에 대열에 합류하길 원한다는 사실을 보여준다.

중국 속담에는 “임무를 수행하려면, 먼저 네 도구를 가다듬어라”라는 속담이 있다. 성공적인 프로

그래밍을 위해서는 먼저 도구를 잘 알아야 한다. 이는 iPad 프로그래밍에서 특히 그렇다. 프로그래밍

에 앞서 먼저 알아두어야 할 도구들이 많기 때문이다. 따라서 이 장에서는 여러분이 iPad 개발 대열에

합류하기 전에 알아두어야 할 다양한 관련 도구들을 익히는 데 목적을 두기로 하겠다.

더 이상의 서론은 접고, 바로 작업에 들어가 보도록 하자.

iPhone SDK 다운로드하기 �

iPhone SDK에 포함된 구성 요소 �

개발도구(XCode, 인터페이스 빌더, �

iPhone 시뮬레이터)의 기능들

iPhone 시뮬레이터의 기능들 �

iPhone OS의 구조 �

iPhone SDK 프레임워크 �

iPad의 한계와 특징 �

Page 30: 시작하세요! 아이패드 프로그래밍

4 l 시작하세요! 아이패드 프로그래밍

iPhone SDK 다운로드하기

iPad 프로그램을 개발하려면 먼저 http://developer.apple.com/iphone/program/start/register/

에서 iPhone 개발자 등록을 마쳐야 한다. 개발자 등록은 무료이며, 개발자 등록을 마치면 iPhone

SDK(so�ware development kit)는 물론 시작할 때 도움이 되는 다른 기술 자료에도 접근할 수 있다.

[참고] iPad는 iPhone이나 iPod 터치와 같은 운영체제(OS)를 사용한다. 그러므로 여러분이

iPad용으로 프로그램을 개발하더라도 iPhone SDK를 쓸 수 있다. 따라서 이 책에서는 ‘iPhone’

이라는 용어를 자주 접하게 될 것이다.

개발자 등록 절차를 마치면 iPhone SDK를 다운로드할 수 있다(그림 1-1, 버전 3.2).

그림 1-1 1

iPhone SDK를 설치하기 전에 다음과 같은 시스템 사양을 충족하는지 확인해 보아야 한다.

Intel 프로세서를 사용하는 Mac만 지원된다. 따라서 (G4 또는 G5 맥과 같은) 다른 프로세서

타입의 컴퓨터라면 개발을 진행할 수 없다.

운영 체제는 가장 최신의 Mac OS X 버전으로 업데이트되어 있어야 한다. 2

1  (옮긴이) 현재는 이 사이트에서 iPhone SDK 4.0.1 정식 버전 및 4.1 베타 버전을 다운로드할 수 있다.

2  (옮긴이) iPhone SDK 3.2 정식 버전 이상의 SDK에서는 Mac OS X Snow Leopard 이상의 OS가 필요하다.

Page 31: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 5

반드시 필요한 것은 아니지만 실제 iPad를 사용할 것을 강력 추천한다. 애플리케이션을 테스트할

때는 포함되어 있는 (iPhone과 iPad에 모두 사용가능한) iPhone 시뮬레이터를 사용해도 된다. 하지

만 GPS나 가속도계와 같이 특정 하드웨어 기능을 테스트하려면 실제 iPad 기기가 필요하다.

SDK를 다운로드한 후에는 설치 절차를 진행한다(그림 1-2). 라이선스 동의를 묻는 문구에는 모두

동의하고, SDK를 설치할 대상 폴더를 선택한다.

그림 1-2

설치 과정에서 기본 설정을 선택할 경우 개발 도구들은 /Developer/Applications 폴더에 설치된다

(그림 1-3).

그림 1-3

Page 32: 시작하세요! 아이패드 프로그래밍

6 l 시작하세요! 아이패드 프로그래밍

iPhone SDK의 구성 요소

iPhone SDK에는 iPhone, iPod 터치, iPad용 애플리케이션 개발을 도와주는 다양한 개발 도구가 포

함되어 있다. 이러한 개발 도구에는 다음과 같은 것들이 있다.

Xcode ― 프로젝트 관리, 편집, 디버그를 도와주는 통합 개발 환경(IDE)

대시코드(Dashcode) ― 웹 기반의 iPhone 및 iPad 애플리케이션 또는 대시보드 위젯을 개발할 수 있도록 도와주는 통합 개발 환경(IDE). 대시코드에 대한 설명은 이 책의 범위를 벗어난다.

iPhone 시뮬레이터 (iPhone Simulator) ― 맥에서 iPhone이나 iPad 시뮬레이션이 가능하도록 해 주는 소프트웨어 시뮬레이터

인터페이스 빌더(Interface Builder) ― iPhone과 iPad 애플리케이션의 사용자 인터페이스 디자

인을 위한 시각 편집 툴

인스트루먼트(Instruments) ― 애플리케이션 최적화와 실시간 메모리 누수 감시 등 최적화를

도와주는 분석 툴

이어지는 절들에서는 (대시코드를 제외한) 이들 도구 각각에 대해 자세히 설명한다.

Xcode

Xcode를 실행하려면 Xcode 아이콘(/Developer/Applications 폴더에 위치. 그림 1-3)을 더블클릭

하면 된다. 또는 더 빠른 실행을 위해 Spotlight를 사용해 검색어로 Xcode를 치면 결과 목록 상단에

Xcode가 나오는 것을 확인할 수 있다. 그림 1-4는 Xcode의 초기 실행 화면을 보여준다.

그림 1-4

Page 33: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 7

Xcode를 사용하면 그림 1-5에 나오는 다양한 프로젝트 템플릿을 사용해 iPhone, iPad, Mac OS X

애플리케이션들을 만들 수 있다.

그림 1-5

Xcode의 통합 개발 환경에서는 개발을 한층 편리하게 해 주는 다양한 도구와 기능들을 제공하고

있다. 이러한 기능 중 하나는 코드 자동 완성(다음 페이지 그림 1-6)으로, 팝업 목록을 통해 사용 가능

한 클래스들이나 클래스 멤버들(메서드, 속성 등)을 보여준다.

[참고] Xcode에서 자주 사용되는 기능들에 대한 보다 자세한 설명은 부록 B를 참고하도록 하자.

iPhone 시뮬레이터

iPhone 시뮬레이터(다음 페이지 그림 1-7)는 실제 iPhone/iPad/iPod 터치 없이도 애플리케이션

을 테스트할 수 있게 해 주는 아주 유용한 도구다. iPhone 시뮬레이터는 /Developer/Platforms/

iPhoneSimulator.platform/Developer/Applications에서 찾을 수 있다. 대부분의 경우, 여러분이 iPhone

시뮬레이터를 직접 실행할 일은 거의 없다. 애플리케이션을 실행(또는 디버깅)할 때 Xcode에서

iPhone 시뮬레이터를 자동으로 실행시키기 때문이다. 이때 Xcode에서는 애플리케이션을 iPhone

시뮬레이터에 자동으로 설치해 준다.

Page 34: 시작하세요! 아이패드 프로그래밍

8 l 시작하세요! 아이패드 프로그래밍

그림 1-6

그림 1-7

Page 35: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 9

iPhone 시뮬레이터는 에뮬레이터가 아니다.

iPhone 시뮬레이터는 시뮬레이터이지 에뮬레이터가 아니다. 그럼 둘에는 어떤 차이가 있을까? 시

뮬레이터는 실제 기기의 행동을 따라하려고 한다. iPhone 시뮬레이터도 실제 iPhone이나 iPad 기

기의 행동을 따라한다. 하지만 이러한 시뮬레이터는 Mac에 설치된 다양한 라이브러리(예를 들어,

QuickTime)를 사용해 렌더링을 수행함으로써 실제 iPhone 같은 효과를 낸다. 아울러 시뮬레이터

에서 테스트되는 애플리케이션들은 모두 시뮬레이터가 이해할 수 있는 바이트 코드인 x86 코드로

컴파일된다.

이에 반해, 에뮬레이터는 실제 기기의 동작을 모방한다. 에뮬레이터에서 테스트되는 애플리케이션

들은 모두 실제 기기에서 사용되는 실제 바이트코드로 컴파일된다. 에뮬레이터에서는 에뮬레이터를

실행하고 있는 컴퓨터에서 실행가능한 형태로 이러한 바이트코드를 해석함으로써, 애플리케이션을

실행한다.

이러한 시뮬레이터와 에뮬레이터의 차이점을 비유적으로 설명해 보면 다음과 같다. 여러분이 위험

한 칼을 가지고 노는 아이를 설득해야 한다고 가정해 보자. 이 상황을 시뮬레이트할 경우, 여러분은

마치 여러분이 칼에 찔려 괴로운 것 같은 행동을 하게 될 것이다. 이 상황을 에뮬레이트할 경우에는,

실제 여러분이 칼로 몸을 베는 것을 아이에게 보여주어야 한다.

iPhone 시뮬레이터에서는 다양한 iPhone OS 버전을 시뮬레이트할 수 있다(그림 1-8). 이러한 기능

은 기존 OS 버전을 지원할 때도 유용하게 활용할 수 있고, 특정 OS 버전에서 에러가 보고될 때도 테

스트 및 디버깅 용도로 활용할 수 있다.

그림 1-8

iPhone 시뮬레이터의 기능들

iPhone 시뮬레이터에서는 실제 iPhone, iPod 터치, iPad 기기의 다양한 기능들을 시뮬레이트한다.

iPhone 시뮬레이터에서 테스트할 수 있는 기능들은 다음과 같다.

Page 36: 시작하세요! 아이패드 프로그래밍

10 l 시작하세요! 아이패드 프로그래밍

화면 회전 ― 왼쪽, 위, 오른쪽

제스처 지원

탭 (Tap)

터치 앤 홀드 (Touch and Hold)

더블 탭 (Double Tap)

스와이프 (swipe)

플릭 (Flick)

드래그 (Drag)

핀치 (Pinch)

메모리 부족 경고 시뮬레이션

하지만 iPhone 시뮬레이터는 실제 기기에 대한 소프트웨어 시뮬레이터이기 때문에 제약도 있다.

iPhone 시뮬레이터에서 제공하지 않는 기능들에는 다음과 같은 것들이 있다.

전화 걸기

가속도계 접근하기

SMS 메시지 주고 받기

앱스토어에서 애플리케이션 설치하기

카메라

마이크

OpenGL ES의 몇 가지 기능들

[참고] 이전 버전의 SDK(3.1.3)에서는 iPhone 시뮬레이터에서 위도 37.3317N, 경도

122.0307E처럼 항상 고정된 좌표를 반환했다. 하지만 최신 SDK에서는 iPhone 시뮬레이터가 실

행되고 있는 Mac의 현재 위치를 사용해 현재 위치를 반환하고 있다.

Page 37: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 11

여기서 한 가지 주의할 점은 iPhone 시뮬레이터의 성능이 실제 기기의 성능보다는 Mac의 성능과

좀 더 밀접한 연관이 있다는 것이다. 따라서 테스트 목적을 위해서는 iPhone 시뮬레이터에서만 테스

트해 보는 것보다는 실제 기기에서 테스트하는 것이 훨씬 좋다.

iPhone 시뮬레이터에는 분명 제약도 있지만, 애플리케이션 테스트를 위해서는 유용한 도구임에 틀

림이 없다. 하지만 이와 별도로 앱스토어에 애플리케이션을 올리기 전에 실제 iPad에서 테스트하는

일은 항상 빼놓지 말아야 한다.

iPhone 시뮬레이터에서 애플리케이션 제거하기

iPhone 시뮬레이터에 사용되는 iPhone OS 파일 시스템의 사용자 도메인은 ~/Library/Application

Support/iPhone Simulator/ 폴더에 위치하고 있다.

[참고] ~/Library/Application Support/iPhone Simulator/ 폴더는 <iPhoneUserDomain>이라고도

부른다.

서드파티 애플리케이션들은 모두 <iPhoneUserDomain>/<version_no>/Applications/ 폴더에 저장된다.

애플리케이션이 iPhone 시뮬레이터에 디플로이(deploy)되면 홈 화면에 아이콘(그림 1-9 좌측 그림)이

생성되고 Applications 폴더에 파일과 폴더가 생성(그림 1-9 우측 그림)된다.

그림 1-9

애플리케이션을 제거(삭제)하려면 다음 절차를 따르면 된다.

Page 38: 시작하세요! 아이패드 프로그래밍

12 l 시작하세요! 아이패드 프로그래밍

홈 화면에서 모든 아이콘들이 흔들리기 시작할 때1.

까지 애플리케이션의 아이콘을 클릭한 후 그대로

유지한다. 모든 아이콘들의 좌측 상단 구석에 X 버

튼이 표시되는 것을 확인한다.

제거하려는 애플리케이션 아이콘 옆에 있는 X 버2.

튼을 클릭한다. (그림 1-10)

아이콘을 삭제할지 여부를 묻는 경고창이 나타난3.

다. Delete를 클릭해 삭제를 확인한다.

[주의] 애플리케이션이 제거되면 Applications 폴더에 있는 해당 파일들과 폴더들도 자동으로 삭

제된다.

iPhone 시뮬레이터를 초기화하려면 아이폰 시뮬레이터 선택 후 Reset Content and Settings 메뉴

를 선택하면 가장 쉽게 초기화할 수 있다.

인터페이스 빌더

인터페이스 빌더는 iPad 애플리케이션의 사용자 인터페이스 디자인을 도와주는 시각 도구다. 인터페

이스 빌더를 사용하면 윈도우에 뷰를 드래그앤드롭한 후 여러 뷰를 아웃렛과 액션에 연결해 코드와

뷰가 프로그래밍적으로 상호작용하도록 할 수 있다.

[참고] 아웃렛과 액션에 대해서는 3장에서 자세히 다루고 있으며, 인터페이스 빌더에 대한 자세한

내용은 부록 C에서 소개하고 있다.

그림 1-11은 인터페이스 빌더의 여러 윈도우를 보여주고 있다.

인스트루먼트

인스트루먼트(그림 1-12) 애플리케이션은 Mac OS X, iPhone, iPad 애플리케이션의 성능을 동적으로

확인하고 프로파일링할 수 있도록 해 주는 도구다.

그림 1-10

Page 39: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 13

그림 1-11

그림 1-12

Page 40: 시작하세요! 아이패드 프로그래밍

14 l 시작하세요! 아이패드 프로그래밍

인스트루먼트를 사용해 여러분은 다음과 같은 것들을 할 수 있다.

애플리케이션의 스트레스 테스트

애플리케이션의 메모리 누수 모니터링

애플리케이션에서 실행하는 행동들에 대한 깊이 있는 이해

재현이 어려운 애플리케이션의 문제점 추적

[참고] 인스트루먼트 애플리케이션에 대한 내용은 이 책의 범위를 벗어난다. 이에 대한 보다 자세

한 내용은 애플의 문서를 참고하도록 하자. 1

1   http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/

Introduction/Introduction.html를 참고하자.

iPhone OS의 아키텍처

이 책에서는 iPhone OS의 내부 구조에 대해서는 살펴보지 않지만, iPhone OS의 주요 항목들에 대해

서 이해하게 된다면 많은 도움이 될 것이다. 그림 1-13에는 Mac OS X와 (iPhone, iPod 터치, iPad에서

사용되는) iPhone OS의 서로 다른 추상 레이어가 나와 있다.

그림 1-13

Page 41: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 15

[참고] iPhone OS는 설계적으로 Mac OS X와 매우 유사하다. 다만, Mac OS X의 경우 최상위

레이어가 코코아 프레임워크(Cocoa Framework)인 반면, iPhone OS의 경우 코코아 터치(Cocoa

Touch)라는 점이 다를 뿐이다.

최하단 레이어는 코어 OS로, 운영체제의 기본이 된다. 코어 OS는 메모리 관리, 파일 시스템, 네트워

킹 및 기타 OS 업무를 처리하며 하드웨어와 직접 상호작용하는 역할을 담당한다. 코어 OS 레이어는

다음과 같은 구성 요소들로 이루어져 있다.

OS X 커널

Mach 3.0

BSD

소켓

보안

전력 관리

키체인

인증서

파일 시스템

봉쥬르

코어 서비스 레이어는 코어 OS 레이어에서 제공하는 서비스들을 바탕으로 한 추상화를 제공한다.

코어 서비스 레이어에서는 iPhone OS 서비스에 대한 기본 접근 기능을 제공하며 다음 구성 요소들로

이루어진다.

컬렉션

주소록

네트워킹

파일 접근

SQLite

코어 로케이션

Page 42: 시작하세요! 아이패드 프로그래밍

16 l 시작하세요! 아이패드 프로그래밍

넷 서비스

스레딩

환경설정

URL 유틸리티

미디어 레이어는 iPad 애플리케이션에서 사용할 수 있는 멀티미디어 서비스를 제공한다. 미디어 레

이어는 다음 구성 요소들로 이루어져 있다.

코어 오디오

OpenGL

오디오 믹싱

오디오 레코딩

비디오 플레이백

JPG, PNG, TIFF

PDF

Quartz

코어 애니메이션

OpenGL ES

코코아 터치 레이어는 iPad 프로그래밍을 위해 다양한 라이브러리를 접근하도록 하는 추상 레이어

를 제공한다. 이러한 라이브러리의 종류로는 다음과 같은 것들이 있다.

멀티터치 이벤트

멀티터치 컨트롤

가속도계

뷰 계층구조

다국어

경고창

웹 뷰

피플 피커

Page 43: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 17

이미지 피커

컨트롤러

iPhone SDK는 표 1-1의 프레임워크들로 구성된다.

[참고] 프레임워크란 특정 기능을 제공하는 소프트웨어 라이브러리를 말한다.

표 1-1 iPhone SDK의 프레임워크

프레임워크�이름 설명

AddressBook.framework 사용자의 연락처를 저장하기 위해 중앙 데이터베이스에 접근하도록 해 준다.

AddressBookUI.framework 주소록 데이터베이스에 저장된 연락처를 표현하는 UI를 제공한다.

AudioToolbox.framework 오디오 녹음, 재생, 오디오 스트림 파싱에 대한 인터페이스를 제공한다. 특별히

iOS4에서는 오디오 세션 관리를 위한 추가 인터페이스를 제공한다.

AudioUnit.framework iPhone OS에서 제공하는 오디오 처리 플러그인에 대한 인터페이스를 제공한다.

AVFoundation.framework 오디오 녹음 및 재생과 더불어 오디오 하드웨어 관리와 같은 하위 레벨 C API

를 제공한다.

CFNetwork.framework HTTP, FTP, 봉쥬르 서비스와 같은 네트워크 서비스에 대한 접근 및 설정 기능

을 제공한다.

CoreAudio.framework 코어 오디오 인터페이스에서 사용하는 데이터 타입 및 상수를 정의한다.

CoreData.framework 애플리케이션에서 객체 그래프 관리와 관련한 일반적인 해결책을 제공한다.

CoreFoundation.framework 일반 데이터 타입, 유니코드 문자열, XML, URL 자원 등과 관련한 추상화를 제

공한다.

CoreGraphics.framework 2D 렌더링을 위한 C 기반의 API를 제공한다. Quartz 드로잉 엔진을 기반으로

한다.

CoreLocation.framework GPS, 셀 id, Wi-Fi 네트워크를 사용해 위치 기반 정보를 제공한다.

ExternalAccessory.framework 외부 액세서리 하드웨어와 통신할 수 있는 방법을 제공한다.

Foundation.framework NSObject, 기초 데이터 타입, 운영 체제 서비스 등을 위한 Objective-C의 기

초 클래스들을 제공한다.

GameKit.framework 게임에 네트워크 기능을 제공한다. p2p 커넥션 또는 게임 내 음성 기능 등에 주

로 사용된다.

IOKit.framework 드라이버 개발을 위한 기능을 제공한다.

MapKit.framework 애플리케이션에 임베드된 지도를 제공한다.

MediaPlayer.framework 동영상과 오디오 파일을 재생하는 기능을 제공한다.

MessageUI.framework 이메일 메시지 작성에 사용되는 뷰 컨트롤러 기반의 인터페이스를 제공한다.

MobileCoreServices.

framework

표준 타입 및 상수에 접근할 수 있도록 해준다.

Page 44: 시작하세요! 아이패드 프로그래밍

18 l 시작하세요! 아이패드 프로그래밍

프레임워크�이름 설명

OpenAL.framework OpenAL 스펙 구현체를 제공한다.

OpenGLES.framework 2D 및 3D 드로잉을 위한 효과적인 API를 제공한다.

QuartzCore.framework 애니메이션과 효과를 설정할 수 있는 기능을 제공하고, 이를 실제 하드웨어에

서 렌더링하는 역할을 담당한다.

Security.framework 데이터를 안전하게 관리하는 기능과 소프트웨어 대한 접근을 제어하는 기능을

제공한다.

StoreKit.framework 애플리케이션에 대한 애플리케이션 내 구입 기능을 제공한다.

SystemConfiguration.

framework

네트워크 사용 가능 여부 및 기기의 상태를 판단하는 기능을 제공한다.

UIKit.framework 애플리케이션의 UI를 관리하는 기본 객체들을 제공한다.

시작하기 앞서 알면 도움이 되는 몇 가지 정보들

위의 내용들을 통해 이제 iPad 애플리케이션 개발에 포함되는 도구들에 대해서는 잘 이해하게 되었

을 것이다. 하지만 개발에 들어가기에 앞서, 다음 절들에 나온 유용한 정보들을 먼저 익힌다면 개발 여

정을 떠나는 여러분의 발걸음이 한층 더 가벼워질 것이다.

iPhone OS의 버전

이 책을 쓰고 있는 현 시점 기준으로 iPhone OS는 세 번째 리비전 버전이 출시되어 있다. 현재 iPhone

OS의 버전은 3.2로, iPhone OS의 메이저 버전들을 정리하면 다음과 같다. 3

1.0 ― iPhone의 최초 발표 버전

1.1 ― 1.0 버전에 대한 기능 추가 및 버그 수정 버전

2.0 ― iPhone 3G 출시에 따른 버전. 앱스토어와 함께 등장했다.

2.1 ― 2.0 버전에 대한 기능 추가 및 버그 수정 버전

2.2 ― 2.1 버전에 대한 기능 추가 및 버그 수정 버전

3.0 ― iPhone OS에 대한 세 번째 메이저 릴리스 버전

3.1 ― 3.0 버전에 대한 기능 추가 및 버그 수정 버전

3   (옮긴이) 현재는 네 번째 리비전인 iOS 4.0.1이 정식 출시되었다. iOS4에서 제공하는 새로운 기능들에 대해서는 http://developer.

apple.com/technologies/iphone/whats-new.html를 참고하도록 하자.

Page 45: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 19

3.2 ― iPad만을 위한 버전 릴리스. iPhone 3.2의 새로운 기능과 관련해서는 아래 박스 항목을

참고하도록 하자.

각 버전에 따른 기능에 대한 자세한 설명은 http://en.wikipedia.org/wiki/IPhone_OS_version_

history에서 확인할 수 있다.

iPhone OS 3.2의 새로운 기능

2010년 1월, 애플은 기존 iPhone OS를 기반으로 하는 새로운 기기를 발표한다. 바로 iPad다.

iPad는 iPod 터치를 닮은 태블릿 컴퓨터로, iPod 터치에 비해 매우 큰 화면을 가지고 있다. iPad의

버전은 Wi-Fi만 지원되는 세 가지 버전과 Wi-Fi와 함께 3G 네트워크를 지원하는 세 가지 버전을 합

쳐 모두 여섯 가지 버전으로 출시되었다. iPad는 저장 공간이 16GB, 32GB, 64GB인 세 가지 버전

으로 출시되었다.

iPhone OS 3.2의 새로운 기능들에는 다음 기능들이 포함되어 있다.

본래 화면 크기 또는 더블 픽셀 모드를 통한 기존 iPhone 애플리케이션 실행

팝 오버 뷰, 분할 뷰, 커스텀 인풋 뷰와 같은 새로운 UI 기능들

외부 디스플레이에 대한 지원

제스처 인식기를 통한 제스처 감지

애플리케이션에서 보다 정교한 텍스트 처리를 할 수 있도록 해주는 향상된 텍스트 지원 기능

문서 중심 애플리케이션 개발을 도와주는 새로운 파일 및 문서 지원

실제 기기에서의 테스트

iPad 개발을 처음하는 개발자들이 자주하는 불평 중 하나가 자신들이 개발한 애플리케이션을 다른

기기에서 테스트해보지 못한다는 것이다. 자신들이 iPad를 가지고 있으면서도 기기에서 직접 애플리

케이션을 테스트할 수 없다니 이 말이 조금 이상하게 들릴 수 있다. 하지만 실상을 알고 보면 이렇다.

보안상의 이유로 애플에서는 모든 애플리케이션이 유효한 인증 서명을 받도록 하고 있는데, 이러한 테

스트 목적에도 개발자 인증이 필요한 것이다.

애플리케이션을 기기에서 테스트하려면 iPhone 개발자 프로그램에 먼저 등록해야 하고, 기기에 설

치할 개발자 인증을 요청해야 한다. 4

4  (옮긴이) 이와 관련해서는 17장에서 설명하고 있다.

Page 46: 시작하세요! 아이패드 프로그래밍

20 l 시작하세요! 아이패드 프로그래밍

화면 해상도

iPad는 높은 해상도를 지원하는 아름다운 기기다. 크기가(대각선 길이) 9.7 인치인 iPad는 132ppi

(pixel per inch, 인치 당 픽셀 수)에 1024×768 픽셀의 해상도(그림 1-14)를 지원하며 멀티터치가 가

능한 화면을 제공한다. 애플리케이션을 디자인할 때는 보통, 상태바로 인해 실제 해상도가 1004×768

크기로 줄어든다는 점을 주의할 필요가 있다. 물론 프로그래밍적으로 상태바를 끌 경우, 1024×768

해상도를 모두 사용할 수 있지만 말이다.

또 해상도와 관련해 염두에 둘 한 가지 사실은 사용자들이 기기를 회전시켜 가로 모드에서 애플리

케이션을 볼 수도 있다는 것이다. 여러분은 이와 같은 가로 모드에서도 애플리케이션이 제대로 동작

하도록 미리 충분히 대비해야 한다.

768

1004 1024

그림 1-14

[참고] 화면 회전과 관련해서는 6장에서 다루고 있다. iPhone에서 개발할 때와는 달리, iPad에서

실행하는 애플리케이션들은 모두 서로 다른 화면 방향에 대한 기능을 반드시 제공해야 한다.

Page 47: 시작하세요! 아이패드 프로그래밍

01 iPad 프로그래밍 시작하기 l 21

단일 윈도우 애플리케이션

모바일 프로그래밍을 처음 해보는 독자라면 제한된 화면 크기로 인해 대부분의 모바일 플랫폼에서는

단일 윈도우 애플리케이션만 지원한다는 사실을 염두에 둘 필요가 있다. 이 말은 여러분의 애플리케

이션 윈도우가 화면 전체를 차지한다는 의미다. iPad라고 이러한 모바일 플랫폼의 제약에 예외가 될

수는 없다. (Mac OS X나 Windows 같은) 데스크톱 운영 체제에서 흔히 여러 개의 윈도우를 함께 작

업하는 기능은 iPad에서는 지원되지 않는다.

허용되지 않는 백그라운드 애플리케이션

모바일 기기용 프로그램을 만들 때 가장 어려운 과제 중 하나가 배터리 관리다. 잘못된 코드로 애플

리케이션을 작성할 경우 리소스가 크게 낭비되어, 기기의 배터리가 금방 닳게 된다. 애플에서는 이러

한 문제점을 인식하고 다른 플랫폼들에 대한 조사를 통해 얻은 경험을 바탕으로 배터리 수명을 단축

하고 성능을 저하시키는 주범이 백그라운드 애플리케이션이라고 결론내렸다. 예를 들어 Windows

Mobile 같은 플랫폼의 경우(예컨대, 걸려오는 전화 등으로 인해) 메모리상에 있는 애플리케이션이 뷰

를 벗어나더라도 백그라운드 애플리케이션이 메모리에 계속 상주해 기기의 성능을 저하시키고 배터

리의 수명을 단축시킨다.

이러한 문제에 대한 애플의 해결책은 간단한다. 백그라운드에서 애플리케이션이 실행되지 못하도

록 하는 것이다. 물론 이 해결책은 효과적이기는 하지만, 많은 개발자들의 원성을 사고 있다. 백그라

운드 작업이 제대로 동작할 경우 유용하게 활용될 수 있는 애플리케이션들이 많기 때문이다. 예를 들

어 채팅 애플리케이션의 경우, 다른 사용자들로부터 메시지를 받으려면 백그라운드에서도 계속 실행

되어야 한다. 이러한 문제를 보완하기 위해 애플에서는 푸시 통보 서비스를 개발했다. 푸시 통보 서비

스는 애플리케이션이 실행되지 않더라도 애플리케이션에 데이터를 전달하는 서비스다. 이 서비스는

iPhone 3.0과 함께 발표되었다. 푸시 기술을 활용하면 기기는 IP 커넥션을 통해 애플의 서버와 계속

연결 상태를 유지하게 된다. 그리고 기기가 처리해야 할 일이 발생하면 애플의 서버를 통해 기기로 메

시지가 통보되어 해당 메시지를 애플리케이션에 적절히 처리할 수 있도록 해 준다.

[참고] 푸시 통보에 대해서는 17장 ‘애플 푸시 통보 서비스’에서 다루고 있다.

Page 48: 시작하세요! 아이패드 프로그래밍

22 l 시작하세요! 아이패드 프로그래밍

요약

이 장에서는 iPhone 애플리케이션 개발에 사용되는 도구들을 간단히 살펴보았다. 또, 단일 애플리케

이션 제약 및 기존 iPhone 애플리케이션 지원 등과 같은 iPad의 특징들에 대해서도 일부 살펴보았다.

다음 장에서는 여러분의 첫 번째 iPad 애플리케이션을 만들어 볼 것이다. 이 과정을 차분히 밟으면 여

러분도 머지않아 iPad 애플리케이션을 마스터하게 될 것이다.

▶ 1장에서 배운 내용

주제 주요�개념

iPhone SDK 다운로드 http://developer.apple.com에서 먼저 iPhone 개발자로 등록한 후, SDK를 다운

로드한다.

iPhone 시뮬레이터 대부분의 테스트는 iPhone 시뮬레이터에서 가능하다. 하지만 실제 기기를 가지고

기기상에서 실제 테스트를 진행하는 것을 권장한다.

iPhone 시뮬레이터의 한계 하드웨어에 대한 접근은 시뮬레이터에서는 거의 지원되지 않는다. 예를 들어 카메

라, 가속도계, 음성 녹음 등의 기능은 시뮬레이터에서는 지원되지 않는다.

iPhone SDK의 프레임워크 iPhone SDK는 iPad에서 특정 기능을 수행하는 여러 프레임워크를 제공하고 있다.

iPad 애플리케이션 프로그래밍은 이러한 프레임워크들을 모두 활용해 이루어진다.

백그라운드 애플리케이션 iPad는 서드파티 백그라운드 애플리케이션을 지원하지 않는다.

화면 해상도 1024×768 픽셀 (상태바 감춘 상태). 1004×768 픽셀 (상태바가 보이는 상태).

단일 윈도우 애플리케이션 모든 iPad 애플리케이션은 단일 윈도우 체계다. 즉, 모든 윈도우가 전체 화면을 채

우고, 윈도우 오버랩은 허용되지 않는다.

Page 49: 시작하세요! 아이패드 프로그래밍

23

02첫 번째 Hello World! 애플리케이션 만들기

이제 모든 툴과 SDK가 설정되었으므로 iPad 개발을 시작할 준비가 모두 끝났다. 많은 프로그래밍 책

에서는 관례적으로 프로그래밍을 시작하는 장의 내용을 “Hello World” 애플리케이션을 만드는 법을

보여주는 내용으로 채우고 있다. 이런 설명 방식은 여러분이 지나치게 많은 내용으로 인해 주눅들지

않으면서 여러 도구를 사용해 프로그래밍을 해 볼 수 있도록 도와준다는 장점이 있다. 또 이런 프로그

램을 만드는 일은 곧바로 여러분에게 성취감을 안겨주기도 한다. 이렇게 간단한 프로그램을 통해서도

실제로 뭔가 동작하는 것을 확인할 수 있기 때문에 더 많은 내용을 배우고 싶게 하는 동기를 부여하

는 것이다.

Xcode 시작하기

Xcode를 실행하면 그림 2-1과 같은 초기 화면을 보게 될 것이다.

[참고] Xcode를 실행하는 가장 쉬운 방법은 Spotlight에서 Xcode를 타이핑한 후 엔터키를 눌러

서 실행하는 것이다.

새로운 iPad 프로젝트 생성하기 �

Xcode를 사용해 첫 번째 iPad 애플리케이션 만들기 �

인터페이스 빌더를 사용해 iPad 애플리케이션의 사용자 인터페이스(UI) �

디자인하기

기기의 방향에 따라 애플리케이션이 회전하도록 코드 작성하기 �

iPad 애플리케이션에 아이콘 추가하기 �

Page 50: 시작하세요! 아이패드 프로그래밍

24 l 시작하세요! 아이패드 프로그래밍

그림 2-1

새로운 iPad 프로젝트를 생성하려면 File New Project를 선택하면 된다. 그림 2-2에는 Xcode

를 사용해 생성할 수 있는 다양한 프로젝트들이 나와 있다. 이 그림에서 왼쪽 패널을 보면 iPhone OS

와 Mac OS X로 크게 두 항목으로 구분되어 있는 것을 볼 수 있다. iPad는 iPhone OS를 사용하므로,

iPhone OS 밑에 있는 애플리케이션 항목을 클릭해 iPad 애플리케이션 개발에 사용할 수 있는 다양

한 템플릿들을 확인해 보도록 하자.

그림 2-2

Page 51: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 25

생성할 수 있는 iPad 애플리케이션의 타입에는 여러 가지가 있지만, 이 장에서는 우선 뷰 기반 애플

리케이션(View-based Application) 템플릿을 선택하고 Choose 버튼을 클릭하기로 한다.

[참고] 탭 바 애플리케이션(Tab Bar Application)이나 분할 뷰 기반 애플리케이션(Split View-

based Application)과 같은 다른 iPad 애플리케이션 타입에 대해서는 이어지는 장들을 통해 설명

한다.

프로젝트의 이름을 HelloWorld로 정한 후 Save를 클릭한다. 이렇게 하면 Xcode에서 여러분이 선택

한 템플릿에 대한 프로젝트를 생성해 줄 것이다. 그림 2-3에는 이렇게 생성된 프로젝트에 사용되는 다

양한 파일들과 폴더들이 나와 있다.

그림 2-3

Xcode의 왼쪽 패널은 프로젝트의 그룹들을 나타낸다. 이러한 그룹 또는 폴더를 펼치면 그 안에 들

어있는 파일들을 볼 수 있다. Xcode의 오른쪽 패널은 왼쪽 패널에서 선택한 그룹 또는 폴더 내에 들어

있는 파일들을 보여준다. 특정 파일을 편집하려면 목록에서 파일을 선택해 오른쪽 패널의 하단에 편

집기가 나타나도록 하면 된다. 새 창에서 파일을 편집하고 싶은 경우에는 파일을 더블클릭하면 새 창

에서 편집할 수 있다.

Page 52: 시작하세요! 아이패드 프로그래밍

26 l 시작하세요! 아이패드 프로그래밍

인터페이스 빌더 사용하기

지금까지는 프로젝트에 아무런 UI도 없다. UI가 없다는 것을 확인하려면 -R(또는 Run Run)을

클릭해 애플리케이션이 iPhone 시뮬레이터에 디플로이되도록 하면 된다. 그림 2-4는 iPhone 시뮬레

이터에 빈 화면이 나타난 것을 보여주는 그림이다. 아직까지는 이 결과 화면으로도 괜찮다. 이 장의 내

용을 진행하면서 애플리케이션에 변화를 줄 것이기 때문이다.

그림 2-4

물론, 빈 화면은 별로 쓸모가 없다. 따라서 이번에는 애플리케이션 UI에 뷰를 추가해 보기로 하겠

다. 프로젝트의 파일 목록에서는 .xib 확장자를 갖는 두 개의 파일을 볼 수 있다. 하나는 MainWindow.

xib이고 다른 하나는 HelloWorldViewController.xib 파일이다. .xib 확장자를 갖는 파일들은 기본적으

로 XML 파일로 애플리케이션에 대한 UI 정의를 담고 있다. .xib 파일은 XML 콘텐트를 직접 수정하

거나 또는 더 편리한 방식인 인터페이스 빌더를 사용해 편집할 수 있다.

인터페이스 빌더는 iPhone SDK의 일부로 드래그앤드롭을 통해 iPad (및 Mac) 애플리케이션의 UI

를 개발할 수 있게 해 준다.

Page 53: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 27

HelloWorldViewController.xib 파일을 더블클릭하면 인터페이스 빌더가 실행된다. 그림 2-5는 인터페

이스 빌더에서 HelloWorldViewController.xib 파일의 콘텐트(아직까지는 비어 있다)를 보여주는 그림이

다. 이 그림을 보면 iPad 애플리케이션의 UI에 추가할 수 있는 여러 뷰가 라이브러리 윈도우에 나타나

는 것을 확인할 수 있다. 뷰 윈도우(View window)는 UI의 그래픽 레이아웃을 보여준다. 다른 윈도우들

의 사용 방법은 잠시 후 보게 될 것이다.

[참고] 인터페이스 빌더에 익숙하지 않다면 인터페이스 빌더에 대한 속성 코스를 제공하는 부록 C

를 참고하도록 하자.

그림 2-5

뷰 윈도우가 가로 모드인 상태에서(가로 모드가 아닐 경우 우측 상단의 화살표를 클릭해 가로 모드

로 전환한다), 라이브러리 패널에서 스크롤을 아래로 움직여 Label 뷰를 찾은 후 Label 뷰를 뷰 윈도우

에 드래그한다(그림 2-6 참고).

Label 뷰가 추가되면 Label 뷰를 선택해 Tools Attributes Inspector를 선택한다. 이어서 텍스트

필드에 Hello World!를 입력한다. 또 Layout 항목에서 가운데 정렬 타입을 클릭한다(그림 2-7 참고).

Page 54: 시작하세요! 아이패드 프로그래밍

28 l 시작하세요! 아이패드 프로그래밍

그림 2-6

Label 뷰가 선택돼 있는 상태에서 -T를 클릭해 Fonts 윈도우가 나타나도록 한다(그림 2-8 참고).

폰트 크기를 64로 설정한다.

그림 2-7 그림 2-8

Page 55: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 29

이어서, 라이브러리 윈도우에서 Text Field 뷰를 뷰 윈도우로 드래그앤드롭한 후, Round Rect

Button 뷰를 드래그앤드롭한다. Click Me!를 Title 필드에 입력해 Round Rect Button 뷰의 속성을

수정한다(그림 2-9).

그림 2-9

[참고] (Label이나 Round Rect Button 뷰 등에서) Text나 Title 속성을 지정해 뷰에 텍스트를

표시하는 방식 외에 뷰 자체를 더블클릭해 텍스트를 직접 입력할 수도 있다. 이렇게 텍스트를 입력

한 후에는 필요에 따라 뷰를 재정렬하거나 크기를 조절할 수 있다. 인터페이스 빌더에서는 컨트롤

들이 시각적으로 안정된 레이아웃을 갖추도록 도와주는 정렬 가이드라인을 제공하고 있다

-S 단축키를 통해 HelloWorldViewController.xib 파일을 저장한다. 그 다음, Xcode로 돌아와 -R

키를 눌러서 애플리케이션을 실행한다. 이제 iPhone 시뮬레이터에 수정된 UI가 나타나는 것을 확인

할 수 있을 것이다(다음 페이지 그림 2-10 참고).

[참고] Xcode에서 애플리케이션을 실행하기 전에는 인터페이스 빌더에서 수정한 내용을 항상 저

장해야 한다.

Text Field 뷰를 탭해 키보드가 자동으로 나타나는 것을 확인해 보자(다음 페이지 그림 2-11).

iPhone 시뮬레이터에서 홈 버튼을 누르면 애플리케이션이 시뮬레이터에 설치된 것을 확인할 수 있

을 것이다. 애플리케이션으로 돌아가려면 HelloWorld 아이콘을 다시 탭하면 된다(31쪽 그림 2-12).

Page 56: 시작하세요! 아이패드 프로그래밍

30 l 시작하세요! 아이패드 프로그래밍

그림 2-10

그림 2-11

Page 57: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 31

그림 2-12

[참고] iPad에서는 한 번에 한 개의 애플리케이션만 실행할 수 있다(애플의 내장 애플리케이션은

제외). 따라서 iPad의 홈 버튼을 누르면 여러분의 애플리케이션은 바로 종료된다. 애플리케이션 아

이콘을 탭할 경우, 애플리케이션은 처음부터 다시 시작하게 된다.

화면 방향 전환하기

iPad 시뮬레이터는 뷰 방향 전환 기능도 지원한다. 뷰의 방향 모드를 전환하려면, - 또는 -키

를 누르면 된다. 다음 페이지 그림 2-13은 세로 모드의 iPhone 시뮬레이터를 보여주는 그림이다.

뷰의 방향을 전환하면 애플리케이션이 자동으로 올바른 방향으로 전환되는 것을 볼 수 있다. 이러

한 화면 전환은 Xcode 프로젝트에 있는 코드 파일에서 프로그래밍적으로 제어한다.

Xcode에서 HelloWorldViewController.m 파일을 편집해, 아래 코드에 해당하는 코드를 찾는다.

// 기본 세로 방향 이외의 다른 방향을 지원하도록 오버라이드한다.

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)

interfaceOrientation {

return YES;

}

Page 58: 시작하세요! 아이패드 프로그래밍

32 l 시작하세요! 아이패드 프로그래밍

그림 2-13

이 메서드에서 YES를 반환하는 것을 확인하도록 하자. 이 경우, 모든 방향이 지원되어 방향 모드가

바뀌면 애플리케이션이 자동으로 방향을 바꾸게 된다.

[참고] 아직까지는 HelloWorldAppDelegate.h나 HelloWorldAppDelegate.m에 대해서는 고민하지 않

아도 된다. 이들 파일에 대해서는 다른 장에서 공부하게 될 것이다.

애플리케이션이 특정 방향 모드만을 지원하도록 제한하려면 다음과 같이 지원할 모드를 프로그래

밍적으로 지정해야 한다.

Page 59: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 33

// 기본 세로 방향 이외의 다른 방향을 지원하도록 오버라이드한다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)

interfaceOrientation {

// return YES;

return (interfaceOrientation==UIInterfaceOrientationPortrait ||

interfaceOrientation==UIInterfaceOrientationLandscapeLeft);

}

위 코드에서는 화면이 세로 모드이거나 왼쪽 가로 모드(홈 버튼이 왼쪽에 있는 경우)일 때만 애플리

케이션이 방향을 전환하도록 하고 있다. 그림 2-14는 화면이 오른쪽 가로 모드인 경우, 애플리케이션

에서 방향을 전환하지 않는 모습을 보여주는 그림이다.

그림 2-14

화면 회전과 관련해서는 6장에서 자세히 다루고 있다.

[참고] iPad 애플리케이션에서 가로 모드와 세로 모드를 지원하는 것은 중요한 사실이다. 이로 인

해 여러분은 shouldAutorotateToInterfaceOrientation: 메서드에서 항상 YES를 반환하는 것이 좋

다. 앞의 코드는 단순히 여러분의 참고를 위해 작성한 코드일 뿐이다.

Page 60: 시작하세요! 아이패드 프로그래밍

34 l 시작하세요! 아이패드 프로그래밍

뷰 위치 조정

앞 절의 예제에서는 뷰의 방향이 바뀌더라도 뷰의 크기와 위치는 그대로 유지되었다. 하지만 이렇게

되면 실제 사용자들이 애플리케이션을 사용할 때 좋은 사용자 경험을 전달해 주지 못한다. 이 경우

가장 이상적인 애플리케이션은 뷰의 방향 전환과 함께 뷰가 화면상에서 위치를 재조정하는 애플리케

이션이다.

뷰의 크기를 재조정하려면 인터페이스 빌더로 가서 Label 뷰를 선택한 후 Tools Size Inspector

를 선택한다. 그림 2-15에 나온 것과 같이(Autosizing 영역에 설정된 다양한 앵커들을 주의깊게 보도

록 하자), 정사각형 안에 있는 라인들을 클릭해 뷰의 Autosizing 속성을 수정한다. 이렇게 하면 뷰의

방향이 바뀔 때마다 Label 뷰가 커지거나 작아지도록 할 수 있다. 동시에 뷰는 항상 화면의 상단에 놓

이게 된다.

그림 2-15

이와 마찬가지로 두 정사각형 안에 있는 라인들을 클릭해 Text Field 뷰의 Autosizing 속성을 그림

2-16과 같이 수정한다.

마지막으로 두 정사각형 안에 있는 라인들을 클릭해 Round Rect Button 컨트롤의 Autosizing 속성을

그림 2-17과 같이 수정한다. 이번에는 뷰의 방향이 바뀌더라도 뷰의 크기를 조정하지 않는다. 대신, 항

상 화면 상단에 위치하도록 지정하기만 한다.

Page 61: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 35

그림 2-16

그림 2-17

이것으로 끝이다! 이제 인터페이스 빌더에서 오른쪽 상단 구석의 화살표를 클릭해(그림 2-18 참고)

화면을 회전시키면, 수정한 내용들이 반영된 것을 바로 확인할 수 있을 것이다.

Xcode로 다시 돌아가, 애플리케이션을 다시 실행해 보자. 이번에는 화면이 회전함에 따라 컨트롤들

이 위치를 조정하고 크기가 변경되는 것을 확인할 수 있다. 그림 2-19는 세로 모드에서 실행되는 뷰를

보여주는 그림이다.

Page 62: 시작하세요! 아이패드 프로그래밍

36 l 시작하세요! 아이패드 프로그래밍

그림 2-18

코드 작성하기

이제 여러분도 어느 정도 Xcode와 인터페이스 빌더를 사용해 코드를 작성하는 데 익숙해졌을 것이라

생각한다. 이제부터는 이런 익숙함을 바탕으로 iPad 프로그래밍의 재미를 조금씩 느껴 보도록 하자.

HelloWorldViewController.h 파일에서, btnClicked: 액션에 대한 정의를 다음과 같이 추가해보자.

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController {

}

-(IBAction) btnClicked:(id) sender;

@end

위 코드에서 볼드체로 표시된 부분은 btnClicked: 액션(보통 이벤트 핸들러라고도 부른다)을 생성

하는 부분이다. 액션을 위와 같이 선언한 후, 파일을 저장하고, 인터페이스 빌더로 돌아오도록 하자.

Page 63: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 37

그림 2-19

이 장의 앞부분에서, 우리는 HelloWorldViewController.xib라는 제목의 윈도우를 본 적이 있다. 이 윈

도우에는 세 개의 구성 요소가 들어있는데, File’s Owner와 First Responder 그리고 View가 그것이다.

뷰 윈도우에서 Round Rect Button 뷰를 컨트롤-클릭한 후 이를 HelloWorldViewController.xib 윈도우

의 File’s Owner로 드래그앤드롭한다(그림 2-20). 이렇게 하면 btnClicked: 액션을 포함하는 작은 팝업

이 나타날 것이다. 여기서 btnClicked: 액션을 클릭한다. 기본적으로 이 과정을 통해 여러분이 하는 일

은 Round Rect Button 뷰를 액션(btnClicked:)과 연결시키는 일이다. 이렇게 하면 사용자가 버튼을 클

릭했을 때 액션이 호출되게 된다. 1

1   (옮긴이) 이렇게 인터페이스 빌더에서 뷰와 액션을 연결한 다음에는 -S 단축키를 사용해 인터페이스 빌더의 변경 사항을 저장해

야 인터페이스 빌더에서 수정한 결과가 반영된다.

Page 64: 시작하세요! 아이패드 프로그래밍

38 l 시작하세요! 아이패드 프로그래밍

그림 2-20

이어서 HelloWorldViewController.m 파일을 열어, btnClicked: 액션을 구현하는 아래 코드를 추가하

도록 한다.

#import "HelloWorldViewController.h"

@implementation HelloWorldViewController

-(IBAction) btnClicked:(id) sender {

//---경고 뷰를 보여준다---

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello World!"

message:@"iPad, here I come!"

delegate:self

cancelButtonTitle:@"OK"

otherButtonTitles:nil];

[alert show];

[alert release];

}

위의 코드는 "iPad, here I come!" 라는 문장의 경고문을 보여주는 코드다.

이제 코딩이 끝났다! Xcode로 돌아와 애플리케이션을 다시 실행해 보도록 하자. 이번에는 Button

뷰를 클릭하면 경고 뷰가 나타나는 것을 확인할 수 있다(그림 2-21).

애플리케이션 아이콘 커스터마이징하기

앞에서도 보았겠지만, iPhone 시뮬레이터에 설치되는 애플리케이션은 기본 흰색 이미지를 아이콘으

로 사용한다. 하지만 이런 아이콘은 커스터마이징이 가능하다. iPad 애플리케이션에 사용할 아이콘

을 디자인할 때는 다음과 같은 점을 참고해 작업하는 것이 좋다.

Page 65: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 39

아이콘은 72×72 픽셀 크기로 디자인한다. 하지만 iPad에서 자동으로 크기를 조절해주기 때

문에, 이보다 큰 크기의 아이콘도 괜찮다. 앱스토어를 통해 애플리케이션을 배포할 때는 512×512 픽셀의 이미지를 준비해야 한다.

아이콘 이미지에는 모서리가 정사각형 형태인 이미지를 사용한다. iPad에서 이미지에 자동으

로 라운드 처리를 하고 표면을 광택 처리하기 때문이다(하지만, 이 기능은 해지가 가능하다.)

그림 2-21

이어지는 따라하기 예제는 기본 흰색 이미지 대신 iPad 애플리케이션에서 커스텀 아이콘을 사용하

도록 하는 과정을 보여주는 예제다.

애플리케이션에 아이콘 추가하기따라하기

애플리케이션을 더 돋보이게 하려면 여러분의 고유 아이콘을 지정하는 것이 좋다. 하지만 이 작업을

하기 전에 먼저 알아두어야 할 것이 있다. iPad의 아이콘 크기에는 두 종류가 있다는 사실이다. 메인

화면에 사용되는 72×72 픽셀 아이콘과 설정 애플리케이션에 사용되는 48×48 픽셀 아이콘이 이에

해당한다. 그림 2-22와 2-23에서는 이들 두 아이콘이 사용되는 모습을 모두 확인할 수 있다.

Page 66: 시작하세요! 아이패드 프로그래밍

40 l 시작하세요! 아이패드 프로그래밍

그림 2-22

그림 2-23

Page 67: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 41

애플리케이션에 아이콘을 추가하려면 먼저 프로젝트의 Resources 폴더에 이미지를 드래그앤1.

드롭한다(그림 2-24). 이때 드롭하는 이미지를 복사할 것인지 선택할 수 있는 창이 나타나는데

이 옵션을 체크해 이미지의 복사본이 프로젝트 폴더에 저장되도록 한다.

Info.plist 2. 항목을 선택한다(마찬가지로 Resources 폴더에 있다). Icon �le 항목을 선택하고

값으로 아이콘의 이름을 지정한다(app-icon.png 그림 2-25). 이렇게 하면 지정된 이름의 이미지

가 애플리케이션 아이콘으로 사용된다.

그림 2-24

그림 2-25

Page 68: 시작하세요! 아이패드 프로그래밍

42 l 시작하세요! 아이패드 프로그래밍

애플리케이션을 실행해 iPhone 시뮬레이터에서 테스트해 본다. 홈 버튼을 눌러 iPad의 메인 3.

화면으로 돌아온다. 새로 추가된 아이콘을 확인할 수 있을 것이다(그림 2-26).

그림 2-26

요약

이 장에서는 첫 번째 iPad 애플리케이션을 만드는 과정을 빠르게 살펴보았다. 이 장의 내용에 대해 아

직까지 궁금한 것이 많을 수도 있겠지만, 이 장의 목적은 단순히 여러분이 코딩을 시작하도록 돕는 데

있었다. 이어지는 장들에서는 이 장에서 다루지 않았던 iPad 프로그래밍에 대한 상세한 설명을 첨부

하고 있으므로, 여러분이 궁금해 하는 내용들은 책을 계속 읽어나가면서 하나씩 풀리게 될 것이다.

연습문제

Xcode에서 iPad 프로젝트에 아이콘을 추가하고 싶다. 이때 제공할 이미지의 크기는 얼마가 되11

어야 할까?

애플리케이션에서 특정 디스플레이 방향을 지원하도록 할 경우, 어떻게 해야 할까?21

Page 69: 시작하세요! 아이패드 프로그래밍

02 첫 번째 Hello World! 애플리케이션 만들기 l 43

Xcode의 Resources 폴더에 이미지를 추가할 때, 왜 Copy items into destination group’s 31

folder (If needed) 옵션을 체크해야 할까?

이 장의 연습문제에 대한 정답은 부록 A에서 확인할 수 있다.

▶ 2장에서 배운 내용

주제 주요�개념

Xcode iPad 애플리케이션 프로젝트를 생성하고 애플리케이션을 관리하는 코드

를 작성하도록 해 준다.

인터페이스 빌더 라이브러리의 다양한 뷰를 사용해 iPad UI를 개발할 수 있도록 해 준다.

뷰 위치 재조정 인터페이스 빌더의 Autosizing 기능을 사용하면 화면 방향이 바뀔 때 뷰

의 위치 및 크기를 재조정할 수 있다.

애플리케이션 아이콘 추가 프로젝트에 이미지를 추가하고 info.plist 파일의 Icon file 속성 이름을 이미지의 이름으로 지정하면, 아이콘을 지정할 수 있다.

iPad 애플리케이션에 아이콘 생성하기 아이콘 크기는 Home 화면의 경우 72×72 픽셀, 설정 애플리케이션의 경

우 48×48 픽셀이 사용된다. 앱스토어 배포를 위한 이미지는 512×512

픽셀이다.