MANNING
Brandon Trebitowski
Christopher Allen
Shannon Appelcline
IN ACTION
Revised edition of
iPhone in Action
Introduction to SDK Development
Praise for iPhone in Action
…iPhone in Action is another smash hit by Manning Publications. Whether you are a novice
programmer or an advanced programmer new to the iPhone platform, you are going to finish this
book feeling ready to take on the world.
—Panah Rad, iPhoneAppsFinder.com
If I were teaching a class on the basics of developing for Apple’s new mobile platform, I would def-
initely use this as the textbook iPhone in Action is a complete primer to iPhone development.
—Victor Agreda, Jr.,
The Unofficial Apple Weblog (TUAW)
well-suited for existing programmers who want comprehensive coverage of the iPhone platform,
the development of webapps, and the key concepts in developing native apps with the
SDK along
with examples.
—Peter Cooper, Mobile Orchard
…excels at providing detailed, organized, and clear information on the development particular-
ities of the iPhone iPhone in Action is the must-have book for developers looking to enter the
realm of iPhone development.
—Cody Overcash, Founder, ModMyi.com
This book is invaluable for beginners because it shows all the possibilities for both web and SDK
and it introduces all the key topics—something no other single title does. Experts will want this
title too for the detailed web development topics.
—Mark Johnson, reader
There is no other iPhone title that has such great coverage of both web and
SDK topics under one
roof, providing a well-rounded developer education.
—Vladimir Pasman,
Cocoacast.com
Download from Wow! eBook <www.wowebook.com>
Download from Wow! eBook <www.wowebook.com>
iPhone and iPad
in Action
INTRODUCTION TO SDK DEVELOPMENT
BRANDON TREBITOWSKI
CHRISTOPHER ALLEN
SHANNON APPELCLINE
Revised Edition of iPhone in Action
MANNING
Greenwich
(74° w. long.)
Download from Wow! eBook <www.wowebook.com>
For online information and ordering of this and other Manning books, please visit
www.manning.com. The publisher offers discounts on this book when ordered in quantity.
For more information, please contact
Special Sales Department
Manning Publications Co.
180 Broad St.
Suite 1323
Stamford, CT 06901
Email:
©2011 by Manning Publications Co. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in
any form or by means electronic, mechanical, photocopying, or otherwise, without prior written
permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their products are
claimed as trademarks. Where those designations appear in the book, and Manning
Publications was aware of a trademark claim, the designations have been printed in initial caps
or all caps.
Recognizing the importance of preserving what has been written, it is Manning’s policy to have
the books we publish printed on acid-free paper, and we exert our best efforts to that end.
Recognizing also our responsibility to conserve the resources of our planet, Manning books
are printed on paper that is at least 15 percent recycled and processed without the use of
elemental chlorine.
Manning Publications Co. Development editor: Katharine Osborne
180 Broad St. Copyeditor: Tiffany Taylor
Suite 1323 Proofreader: Katie Tennant
Stamford, CT 06901 Typesetter: Dottie Marsico
Cover designer: Marija Tudor
ISBN 978-1-935182-58-0
Printed in the United States of America
12 34567 8910– MAL–15 141312 1110
Download from Wow! eBook <www.wowebook.com>
v
brief contents
1
■
Introducing the iPhone and iPad 1
2
■
Learning Objective-C and the iPhone OS SDK 13
3
■
Using Xcode 36
4
■
Using Interface Builder 53
5
■
Creating basic view controllers 68
6
■
Monitoring events and actions 87
7
■
Creating advanced view controllers 111
8
■
Data: actions, preferences, and files 139
9
■
Data: advanced techniques 159
10
■
Positioning: accelerometers, location, and the compass 188
11
■
Media: images and the camera 210
12
■
Media: audio and recording 224
13
■
Graphics: Quartz, Core Animation, and OpenGL 243
14
■
The web: web views and internet protocols 271
15
■
Peer-to-peer connections using Game Kit 295
16
■
Push notification services 316
17
■
The Map Kit framework 328
18
■
In-app purchasing using Store Kit 342
19
■
iPhone SDK enhancements 357
Download from Wow! eBook <www.wowebook.com>
Download from Wow! eBook <www.wowebook.com>
vii
contents
preface xvii
acknowledgments xviii
about this book xx
1
Introducing the iPhone and iPad 1
1.1 A bit of history 2
1.2 All for one and one for all: the iPhone OS platform 2
1.3 Core hardware specifications 3
The iPhone 4
■
The iPad 4
■
The iPod Touch 4
iPhone and iPad input and output specifications 5
iPhone and iPad network specifications 5
■
iPhone OS
browser specifications 6
■
Mobile web standards 8
Other hardware features 8
1.4 How the iPhone and iPad are unique 9
1.5 Understanding iPhone and iPad touch interaction 11
1.6 Summary 12
2
Learning Objective-C and the iPhone OS SDK 13
2.1 Getting ready for the SDK 14
Installing the SDK 14
■
The anatomy of the SDK 15
Download from Wow! eBook <www.wowebook.com>
CONTENTSviii
2.2 Introducing Objective-C 17
The big picture 17
■
The message 18
■
Class definition 20
Properties 22
■
Other compiler directives 24
■
Categories and
protocols 24
■
Wrapping up Objective-C 25
2.3 Introducing the iPhone OS 26
The anatomy of the iPhone OS 26
■
The object hierarchy of the
iPhone OS 27
■
Windows and views 28
2.4 The iPhone OS’s methods 30
Object creation 30
■
Memory management 32
■
Event
response 33
■
Lifecycle management 34
2.5 Summary 35
3
Using Xcode 36
3.1 Introducing Xcode 36
The anatomy of Xcode 37
■
Compiling and executing in
Xcode 38
3.2 Creating a first iPhone project in Xcode: Hello, World! 39
Understanding main.m 39
■
Understanding the application
delegate 40
■
Writing Hello, World! 42
3.3 Creating a first iPad project in Xcode: Hello, World! 44
Writing Hello, World! 45
3.4 Creating a new class in Xcode 45
The new class how-to 46
■
The header file 46
■
The source
code file 47
■
Linking it in 49
3.5 Other Xcode functionality 49
Adding frameworks with Xcode 49
■
Using alternate templates
with Xcode 50
■
Xcode tips and tricks 51
3.6 Summary 52
4
Using Interface Builder 53
4.1 An introduction to Interface Builder 54
The anatomy of Interface Builder 54
■
Simulating in Interface
Builder 56
4.2 A first project in Interface Builder:
pictures and the web 57
Creating new objects 57
■
Manipulating objects graphically 58
Using the inspector window 58
■
Working with pictures 60
Download from Wow! eBook <www.wowebook.com>
CONTENTS ix
4.3 Building connections in Interface Builder 61
Declaring an IBOutlet 62
■
Connecting an object 62
Coding with IBOutlets 63
4.4 Other Interface Builder functionality 65
Building other connections 65
■
Creating external objects 65
Initializing Interface Builder objects 66
■
Accessing .xib files 66
Creating new .xib files 67
4.5 Summary 67
5
Creating basic view controllers 68
5.1 The view controller family 69
5.2 The standard view controller 70
The anatomy of a view controller 70
■
Creating a view
controller 71
■
Creating another view controller 71
■
Building
up a view controller interface 72
■
Using your view controller 73
5.3 The table view controller 78
The anatomy of a table view controller 78
■
Creating a table view
controller 78
■
Building up a table interface 80
■
Using your
table view controller 85
5.4 Summary 85
6
Monitoring events and actions 87
6.1 An introduction to events 88
The responder chain 88
■
Touches and events 89
6.2 A touching example: the event reporter 91
Setting things up in Interface Builder 92
■
Preparing a view for
touches 93
■
Controlling your events 95
6.3 Other event functionality 97
Regulating events 97
■
Other event methods and properties 98
6.4 An introduction to actions 99
The UIControl object 99
■
Control events and actions 99
Using addTarget:action:forControlEvents: 101
6.5 Adding a button to an application 102
Using addTarget:action:forControlEvents: with a button 102
Using an IBAction with a button 103
6.6 Other action functionality 104
Accepting text input with UITextField 104
■
Allowing value
selection with UISlider 106
■
A TextField/Slider mashup 106
Actions made easy 108
■
Actions in use 108
Download from Wow! eBook <www.wowebook.com>
CONTENTSx
6.7 Introducing notifications 109
6.8 Summary 110
7
Creating advanced view controllers 111
7.1 The tab bar view controller 112
The anatomy of a tab bar view controller 112
■
Creating a tab
bar view controller 113
■
Building a tab bar interface 114
Using your tab bar controller 118
7.2 The navigation controller 119
The anatomy of a navigation controller 119
■
Creating a
navigation controller 120
■
Completing the navigation
controller 122
■
Using your navigation controller 124
7.3 Using the flipside controller 127
7.4 The split view controller 129
Creating a split view controller 129
■
Building the split view
controller 130
■
Using your split view controller 134
Adjusting the interface for vertical and landscape modes 135
7.5 Popover and modal view controllers 136
Creating a popover view controller 136
■
Creating a modal view
controller 137
7.6 Summary 138
8
Data: actions, preferences, and files 139
8.1 Accepting user actions 140
8.2 Maintaining user preferences 141
Creating your own preferences 142
Using the system settings 147
8.3 Opening files 151
Accessing your bundle 152
■
Accessing other directories 153
Manipulating files 154
■
Filesaver: a UITextView example 155
8.4 Summary 158
9
Data: advanced techniques 159
9.1 Using SQLite 160
Setting up an SQLite database 160
■
Accessing SQLite 162
Accessing your SQLite database 162
■
Building a navigation
menu from a database 163
■
Expanding this example 170
Download from Wow! eBook <www.wowebook.com>
CONTENTS xi
9.2 Accessing the Address Book 170
An overview of the frameworks 170
■
Accessing Address Book
properties 171
■
Querying the Address Book 173
■
Using the
Address Book UI 175
9.3 An introduction to Core Data 179
Background information about Core Data 180
■
Setting up Core
Data in your application 180
■
Initializing the Core Data
objects 182
■
Adding objects to the database 185
Fetching, updating, and deleting objects in Core Data 185
9.4 Summary 187
10
Positioning: accelerometers, location, and the compass 188
10.1 The accelerometers and orientation 189
The orientation property 189
■
The orientation notification 189
10.2 The accelerometers and movement 190
Accessing the UIAccelerometer 190
■
Parsing the
UIAcceleration 191
■
Checking for gravity 191
■
Checking for
movement 194
■
Recognizing simple accelerometer
movement 194
10.3 The accelerometers and gestures 197
10.4 All about Core Location 199
The location classes 200
■
An example using location and
distance 201
■
An example using altitude 204
■
Using the
compass 207
■
Core Location and the internet 208
10.5 Summary 209
11
Media: images and the camera 210
11.1 An introduction to images 211
Loading a UIImage 211
■
Drawing a UIImageView 212
Modifying an image in the UIKit 213
11.2 Drawing simple images with Core Graphics 213
11.3 Accessing photos 215
Using the image picker 215
■
Taking photos 216
Saving to the photo album 217
11.4 Collage: an image example 217
The collage view controller 218
■
The collage temporary image
view 221
■
The collage view 222
■
Further exploration of this
example 223
11.5 Summary 223
Download from Wow! eBook <www.wowebook.com>
CONTENTSxii
12
Media: audio and recording 224
12.1 Playing audio from the iPod library 225
Retrieving audio items from the iPod media library 225
Getting information about an MPMediaItem 227
■
Playing
media items using MPMusicPlayerController 227
■
Example:
creating a simple media player application 229
12.2 Recording audio 232
Initializing the audio recorder 232
■
Controlling the
audio recorder 233
■
Responding to AVAudioRecorder
events 234
12.3 Playing sounds manually 234
Initializing the AVAudioPlayer 235
The AVAudioPlayerDelegate 235
■
Controlling the
AVAudioPlayer 236
12.4 Example: creating a simple audio recording/
playback application 237
Creating a view-based application 238
■
Adding the needed
frameworks 238
■
Setting up the IBActions 238
■
Creating
the interface 239
■
Setting up the audio recorder and
implementing the IBActions 239
12.5 Recording, playing, and accessing video 240
12.6 Summary 242
13
Graphics: Quartz, Core Animation, and OpenGL 243
13.1 An introduction to Quartz 2D 244
13.2 The Quartz context 244
Drawing to a UIView 246
■
Drawing to a bitmap 247
13.3 Drawing paths 248
Finishing a path 249
■
Creating reusable paths 249
Drawing rectangles 251
13.4 Setting the graphical state 251
Setting colors 252
■
Making transformations 253
Setting clipping paths 255
■
Other settings 256
Managing the state 257
13.5 Advanced drawing in Quartz 257
Drawing gradients 257
■
Drawing images 259
Drawing words 260
■
What we didn’t cover 262
Download from Wow! eBook <www.wowebook.com>
CONTENTS xiii
13.6 Drawing on a picture: an example 262
The PhotoDraw view controller 262
■
The photodraw view 264
Expanding on the example 266
13.7 An introduction to Core Animation 266
The fundamentals of Core Animation 267
■
Getting started with
Core Animation 268
■
Drawing a simple implicit
animation 268
■
Drawing a simple explicit animation 269
13.8 An introduction to OpenGL 269
13.9 Summary 270
14
The web: web views and internet protocols 271
14.1 The hierarchy of the internet 271
14.2 Low-level networking 272
The CFHost class 273
14.3 Working with URLs 274
Creating an NSURL 274
■
Building an NSURLRequest 275
Manipulating HTML data by hand 275
14.4 Using UIWebView 276
Calling up the web view 276
■
Managing the web view
delegate 278
■
Thumbnails: a web view example 278
14.5 Parsing XML 280
Starting up NSXMLParser 281
■
Acting as a delegate 281
Building a sample RSS reader 282
■
Altitude redux: a Core
Location example 287
14.6 POSTing to the web 289
POSTing by hand 289
■
Submitting forms 290
14.7 Accessing the social web 291
Using web protocols 291
■
Using TouchJSON 292
14.8 Summary 294
15
Peer-to-peer connections using Game Kit 295
15.1 Overview of Game Kit 295
15.2 Creating peer-to-peer applications using the
peer picker 296
Using Apple’s built-in peer picker 296
■
Implementing the
GKSessionDelegate methods 300
■
Sending and receiving data
between peers 301
Download from Wow! eBook <www.wowebook.com>
CONTENTSxiv
15.3 Example: creating a multiplayer table tennis game 303
Starting the GKTennis project 304
■
Creating the header
file 304
■
Creating the table tennis interface 306
■
Game
initialization 306
■
Setting up the peer picker and getting
connected 307
■
Implementing the send and receive
methods 309
■
The game loop 311
■
User interaction 314
15.4 Summary 315
16
Push notification services 316
16.1 What are push notifications? 316
16.2 An overview of Apple’s push notification system 318
16.3 Preparing your application to use push notifications 319
Setting up your application certificate 319
■
Setting up your
provisioning profile 321
■
The code for handling push
notifications 321
■
Preparing audio files 323
16.4 Creating a push notification provider in PHP 324
Creating the SSL certificate 324
■
Implementing the PHP push
notification provider 326
16.5 Summary 327
17
The Map Kit framework 328
17.1 Overview of Map Kit 328
17.2 Adding a map to an application 329
Adding the map using Interface Builder 329
■
Adding the map
programmatically 330
■
Controlling the map 330
17.3 Reverse geocoding 332
17.4 Annotating the map 334
Adding basic map annotations 335
■
Adding custom map
annotations 336
17.5 Summary 341
18
In-app purchasing using Store Kit 342
18.1 Setting up a sandbox testing environment 343
Creating an iTunes test user 343
■
Adding products 344
18.2 Creating a simple store interface 347
18.3 Summary 355
Download from Wow! eBook <www.wowebook.com>
CONTENTS xv
19
iPhone SDK enhancements 357
19.1 Custom keyboard accessories 358
Extending UITextField 358
■
Implementing the custom
UITextField 360
■
Custom keyboards 361
19.2 Going forward: the iPhone 4.0 SDK 362
Multitasking 363
■
User experience enhancements 364
Multimedia framework enhancements 365
■
Game Center 365
19.3 Summary 365
appendix A iPhone OS class reference 367
appendix B External sources and references 371
appendix C Publishing your SDK program 373
appendix D Updating current applications for the iPad 376
index 383
Download from Wow! eBook <www.wowebook.com>
Download from Wow! eBook <www.wowebook.com>
xvii
preface
When it came time to write a revised edition of iPhone in Action, Shannon and Christo-
pher had their hands tied with other projects. This is when Manning decided to seek
out another author to perform the necessary updates. They eventually stumbled on
me on Twitter.
I had started programming when I was a junior in high school and spent most of
my time writing web applications and silly Java games. After high school, I attended
the University of New Mexico and acquired a Bachelor of Science degree in Com-
puter Science.
When Apple launched the original iPhone, I drooled over the device and longed
to own one. It wasn’t until Apple came out with the iPhone 3G that I could actually
afford it. Knowing that I wanted to write software for the iPhone, I began learning to
program for it and started a popular development blog called iCodeBlog.com before I
even had a device in hand. Because I was used to reading Javadocs in college, I was
able to learn a lot from the Apple
API documentation.
When I began working on this book, I quickly realized that quite a few of the chap-
ters from the first edition had to go. Although the web applications were a crucial part
of the iPhone apps’ startup, they can no longer compete with native apps. So I
removed the web chapters from the original text and added new ones based on the
newest iPhone
SDK features.
Just as the book was completed, Apple made another big announcement: the com-
pany revealed its newest device, the iPad. Manning and I had a decision to make: either
spend another couple of months on the book, or release a book that would become a
dinosaur the moment it hit the shelves. Fortunately, we chose the former option.
BRANDON TREBITOWSKI
Download from Wow! eBook <www.wowebook.com>
xviii
acknowledgments
Any technical book is a massive undertaking, due to the number of people required to
make sure that it reads well, looks good, and is technically correct. Thus, we have to
thank the entire Manning staff, without whom this book would not exist. They did
more than just correct our errors and polish our words; they also helped us make inte-
gral decisions about the organization and the contents of the book—decisions that we
believe improved it dramatically.
In particular, we’d like to thank the three people at Manning who helped us at the
most pivotal times: Troy Mott, our acquisitions editor, who initially agreed to take on
the book and who stayed with us every step of the way; Katharine Osborne, our devel-
opment editor, who put in an incredible amount of work to ensure the quality of writ-
ing and offered tons of guidance and support along the way; and Marjan Bace, our
publisher, who offered some of the biggest challenges regarding our content and
organization and initiated some of the best improvements.
We’d also like to thank Tiffany Taylor, our copyeditor, and Katie Tennant, our
proofeader. Beyond that, tech editors are crucial to the success of a book like this, so
we want to thank Kalle Alm and Matt Wyman who did the technical proofread of the
manuscript a number of times as it was being revised and updated; they caught minu-
tia that we weren’t even aware of. Though it’s clichéd to say, it’s true: any errors that
sneaked in are ours, but many others were corrected by all of the people we men-
tion—and many more who worked behind the scenes at Manning. They were crucial
to the book, and we’d like to thank them all.
Finally, we’d like to thank the reviewers who generously agreed to read our manu-
script as we worked on it; they improved the book immensely: Ted Neward, Jason
Download from Wow! eBook <www.wowebook.com>
ACKNOWLEDGMENTS xix
Jung, Glenn Stokol, Gershon Kagan, Cos DiFazio, Clint Tredway, Christopher Haupt,
Berndt Hamboeck, Rob Allen, Peter Scott, Lester Lobo, Frank Jania, Curtis Miller,
Chuck Hudson, Carlton Gibson, Amos Bannister, Emeka Okereke, Pratik Patel, Kunal
Mittal, Tyson Maxwell,
TVS Murthy, Kevin Butler, David Hanson, Timothy Binkley-
Jones, Carlo Bottiglieri, and Barry Ezell.
B
RANDON would also like to thank his wife, Ashley, for putting up with the long nights
he spent working on this book. Without her love and support, he would not have
been able to complete a single chapter. He would also like to thank Matt Woodward,
who introduced him to Troy Mott and provided him with the opportunity to work on
this book.
C
HRISTOPHER would like to thank Chris Messina for inviting him to be a founder of
iPhoneDevCamp and to also thank his long-time MacHack and SmartFriends col-
leagues for their support and assistance.
S
HANNON would like to thank Christopher, who got this book started in the first place,
and Brandon for taking on the revised edition.
Download from Wow! eBook <www.wowebook.com>
xx
about this book
iPhone and iPad in Action is an introductory book, intended to teach the basics of
iPhone SDK programming in a tutorial form. It’s an updated revision of iPhone in
Action, which first appeared in 2008. We encourage you to read it straight through,
from chapter 1 to 19. This will introduce the platform, how to program for the iPhone
and iPad, and step you through the entire process in turn.
The audience
We’ve done our best to make this book accessible to everyone who is interested in writ-
ing native programs for the iPhone and iPad. We think it will be especially useful to
people who are looking to dive into the iPhone/iPad arena, because it will allow you
to create native applications for all of Apple’s iDevices.
If you want to learn about iPhone
SDK programming, you should have some expe-
rience with programming in general. It’d be best if you’ve worked with C before, but
that’s not a necessity; if you haven’t, you can read our introduction to Objective-C in
chapter 2, and you should probably expect to do some research on your own to clarify
things. There’s no need to be familiar with Objective-C, Cocoa, or Apple programming
in general. We’ll give you everything you need to become familiar with Apple’s unique
programming style. You’ll probably have a leg up if you understand object-oriented
concepts; but it’s not necessary (and again, you’ll find an introduction in chapter 2).
Roadmap
Chapter 1 explains the details of the iPhone and iPad and how they differ from the
mobile phones that predated the iPhone. It also contains one of this book’s most
Download from Wow! eBook <www.wowebook.com>
ABOUT THIS BOOK xxi
important concepts: the unique features that make the iPhone and iPad stand out
from the pack and which are also of importance to programmers.
Chapter 2 kicks things off by highlighting Objective-C, which is the programming
language used on the iPhone
SDK, and the iPhone OS, which is an immense collection
of frameworks that makes many complex tasks easy.
Chapter 3 looks at Xcode, the first major tool in the SDK. This integrated develop-
ment environment does more than just compile your code. It also helps you correct
simple errors as you type and provides quick, integrated access to all the iPhone pro-
gramming documents.
Chapter 4 shifts the focus to Interface Builder, a graphical design environment
that allows you to create and place interface objects without writing a single line of
code. Interface Builder is a powerful time-saver for programmers and is used through-
out the rest of the text.
Chapter 5 covers simple view controllers. The basic view controller is an important
building block of the
MVC paradigm, dividing control from view; and the table view
controller provides an easy way to organize information while matching the standard
iPhone OS look and feel.
Chapter 6 steps back to talk about user interaction. It covers events, which users
generate by touching the screen with one or more fingers, and actions, which happen
when users interact with a control object like a button or a slider.
Chapter 7 finishes our look at view controllers by examining two more advanced
possibilities. The tab bar view controller allows for modal selection between multiple
pages of content, and the navigation view controller adds hierarchy to tables.
Chapter 8 opens the
SDK toolkit by talking about data. This includes user input,
such as actions and preferences; data storage, such as files; and tools that combine
input and storage, such as the devices’ address book.
Chapter 9 goes into more advanced data strategies. In this chapter, you learn how
to store complex data in an SQLite database or by using Core Data.
Chapter 10 highlights two of the most unique features on the iPhone and
iPad—the accelerometer and the
GPS—showing how the iPhone can track movement
through space.
Chapter 11 covers another of the device’s strengths—media—by showing how to
do basic work with pictures, movies, and sounds
Chapter 12 looks at working with audio. It discusses how to play and record audio
using a device’s microphone and speakers.
Chapter 13 provides an extensive look at graphics, centering on the iPhone’s and
iPad’s vector graphic language, Quartz
2D. It also offers a brief overview of Core Ani-
mation and touches on OpenGL for the iPhone OS.
Chapter 14 examines how you can use the iPhone and iPad to interact with the
internet. This chapter moves through the entire hierarchy of internet communica-
tion, from low-level host connections to
URLs, from web views to modern social lan-
guages like XML and JSON.
Download from Wow! eBook <www.wowebook.com>
ABOUT THIS BOOKxxii
Chapter 15 takes you through the entire process of creating a multiplayer pong
game on the iPhone or iPad. You learn everything about peer-to-peer communication
using the Game Kit framework.
Chapter 16 shows you how to handle push notifications in your applications. It
also provides a simple example of how to create your own push notification server
using
PHP.
Chapter 17 takes an in-depth look at the Map Kit framework. It shows you every-
thing you need in order to integrate fully functional Google maps in any application.
Chapter 18 walks you through one of the main methods for creating a virtual store
in your applications. Using the Store Kit framework, you learn every step of the pro-
cess, from creating products to processing purchases.
Chapter 19 ties up some loose ends and gives you a look at some of the new librar-
ies added to the iPhone
SDK. It also provides you with a roadmap for the iPhone 4.0
SDK and points you in a direction to get more information.
The appendixes contain some additional information that didn’t fit with the flow
of the main text. Appendix A contains a list of SDK objects and what they do. Appen-
dix B features links for many websites of note for iPhone SDK programming. Appen-
dix C includes the current information on how to deploy your SDK programs to actual
devices. Appendix D shows many techniques that you can use to convert iPhone appli-
cations into iPad applications.
Code conventions and downloads
Code examples appear throughout this book. Longer listings appear under clear list-
ing headings, and shorter listings appear between lines of text. All code is set in a
special
font
like
this
to differentiate it from the regular font. Class names have
also been set in code font; if you want to type it into your computer, you’ll be able to
clearly make it out.
With the exception of a few cases of abstract code examples, all code snippets
began life as working programs. You can find the complete set of programs at http://
www.manning.com/iPhoneandiPadinAction. You’ll find two
ZIP files there, one each
for the SDK programs. We encourage you to try the programs as you read; they often
include additional code that doesn’t appear in the book and provides more context.
In addition, we feel that seeing a program working can greatly elucidate the code
required to create it.
The code snippets in this book all include extensive explanations. We often
include short annotations beside the code; and sometimes numbered cueballs beside
lines of code link the subsequent discussion to the code lines.
Software requirements
An Intel-based Macintosh running OS X 10.6 or higher is absolutely required to do
SDK development. You also need to have the iPhone SDK, but this is freely download-
able as soon as you sign up with Apple. The book offers full coverage of the iPhone
SDK 3.2, with some discussion of iOS SDK 4.0.
Download from Wow! eBook <www.wowebook.com>
ABOUT THIS BOOK xxiii
Author Online
This book is intended to be an introduction to iPhone programming. Although it cov-
ers an extensive amount of information about the iPhone and iPad, there’s a lot that
couldn't be covered in a single book. Feel free to come chat with the authors online
about additional topics.
The purchase of iPhone and iPad in Action includes free access to a private web
forum run by Manning Publications, where you can post comments about the book,
ask technical questions, and receive help from the authors and from other users. To
access the forum and subscribe to it, point your web browser to ning.
com/iPhoneandiPadinAction. The Author Online forum and the archives of previ-
ous discussions will be accessible from the publisher’s website for as long as the book
is in print.
Brandon frequently posts tutorials and code snippets on his iPhone development
blog at . He is also very active on Twitter and available to answer
most of your iPhone and iPad development questions. Find him on Twitter at http://
twitter.com/brandontreb.
Christopher and Shannon’s main hangout is ning.
com. This blog contains the newest noteworthy links they have found, discussions
about “missing classes” that we didn’t cover in this book, and occasional articles of
more weight.
And we continue to host Christopher’s original iPhone forum on web develop-
ment, which you can find at .
About the title
By combining introductions, overviews, and how-to examples, the In Action books are
designed to help learning and remembering. According to research in cognitive sci-
ence, the things people remember are things they discover during self-motivated
exploration.
Although no one at Manning is a cognitive scientist, we are convinced that for
learning to become permanent it must pass through stages of exploration, play, and,
interestingly, retelling of what is being learned. People understand and remember
new things, which is to say they master them, only after actively exploring them.
Humans learn in action. An essential part of an In Action guide is that it’s example-
driven. It encourages the reader to try things out, to play with new code, and explore
new ideas.
There is another, more mundane, reason for the title of this book: our readers are
busy. They use books to do a job or to solve a problem. They need books that allow
them to jump in and jump out easily and learn just what they want just when they want
it. They need books that aid them in action. The books in this series are designed for
such readers.
Download from Wow! eBook <www.wowebook.com>
ABOUT THIS BOOKxxiv
About the cover illustration
The illustration on the cover of iPhone and iPad in Action is captioned “Habit of a Lady
of Indostan.” It shows a woman in an intricately decorated dress holding a long-
stemmed flower. The image is taken from the four-volume Collection of the Dress of Differ-
ent Nations by Thomas Jefferys (1757–1752). This comprehensive work, with its beauti-
ful and detailed drawings, has influenced European theatrical costume design for over
200 years. We chose this figure because of its graceful posture and elaborate dress.
Indostan, or as it used to be called, the “Indostanic Peninsula,” is the former name
of South Asia, which is comprised of India, Pakistan, Bangladesh, Sri Lanka, the Mal-
dives, and the Himalayan states of Bhutan and Nepal. Their collective historical back-
ground may be referred to as “the Indian Civilization,” which sets these countries
apart from the rest of the Asian continent. Indostan was also called Hindustan, and
over time it came to mean the Indian subcontinent.
Today, women in India and neighboring countries can still be seen wearing the tra-
ditional sari, which is made of a single long strip of unstitched silk cloth, embroidered
with gold or silver thread. The woman on the cover is wearing a fitted dress that has
sleeves and a defined waist and was likely worn for special occasions, such as weddings
or formal receptions.
Dress codes have changed in the last two hundred and fifty years, and the diversity
by country and by region, so rich at the time, has faded away. It’s now hard to tell apart
the inhabitants of different continents, let alone different regions. Perhaps we have
traded cultural diversity for a more varied personal life—certainly a more varied and
faster-paced technological life.
At a time when it’s hard to tell one computer book from another, Manning cele-
brates the inventiveness and initiative of the computer business with book covers
based on the rich diversity of regional life of more than two centuries ago, brought
back to life by old illustrations such as this one.
Download from Wow! eBook <www.wowebook.com>