My hope is that this book will bring iOS development to a new generation of developers.Teach Yourself iOS 5 Development in 24 Hours provides a clear natural progression of skills develop
Trang 2800 East 96th Street, Indianapolis, Indiana, 46240 USA
Sams Teach Yourself
Trang 3transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise, without
written permission from the publisher No patent liability is assumed with respect to the use of
the information contained herein Although every precaution has been taken in the preparation of
this book, the publisher and author assume no responsibility for errors or omissions Nor is any
liability assumed for damages resulting from the use of the information contained herein
ISBN-13: 978-0-672-33576-1
ISBN-10: 0-672-33576-X
Library of Congress Cataloging-in-Publication Data is on file
Printed in the United States of America
First Printing December 2011
Trademarks
All terms mentioned in this book that are known to be trademarks or service marks have been
appropriately capitalized Sams Publishing cannot attest to the accuracy of this information Use
of a term in this book should not be regarded as affecting the validity of any trademark or service
mark
Warning and Disclaimer
Every effort has been made to make this book as complete and as accurate as possible, but no
warranty or fitness is implied The information provided is on an “as is” basis The author and the
publisher shall have neither liability nor responsibility to any person or entity with respect to any
loss or damages arising from the information contained in this book
Bulk Sales
Sams Publishing offers excellent discounts on this book when ordered in quantity for bulk
pur-chases or special sales For more information, please contact
U.S Corporate and Government Sales
Trang 4Introduction . 1
HOUR 1 Preparing Your System and iDevice for Development . 5
2 Introduction to Xcode and iOS Simulator . 25
3 Discovering Objective-C: The Language of Apple Platforms . 59
4 Inside Cocoa Touch . 89
5 Exploring X-code’s Interface Builder . 117
6 Model-View-Controller Application Design . 147
7 Working with Text, Keyboards, and Buttons . 175
8 Handling Images, Animation, Sliders, and Steppers . 205
9 Using Advanced Interface Objects and Views . 231
10 Getting the User’s Attention . 261
11 Introducing Multiple Scenes and Popovers . 291
12 Making Choices with Toolbars and Pickers . 337
13 Advanced Storyboards Using Navigation and Tab Bar Controllers . 385
14 Navigating Information Using Table Views and Split View Controllers . 421
15 Reading and Writing Application Data . 463
16 Building Rotatable & Resizable User Interfaces . 503
17 Using Advanced Touches and Gestures . 531
18 Sensing Orientation and Motion . 557
19 Working with Rich Media . 583
20 Interacting with Other Applications . 629
21 Implementing Location Services . 661
22 Building Background-Aware Applications . 691
23 Building Universal Applications . 717
24 Application Tracing and Debugging . 735
Index . 755
Trang 5Introduction 1
Who Can Become an iOS Developer? . 2
Who Should Use This Book? . 2
What Is (and Isn’t) in This Book? . 3
HOUR 1: Preparing Your System and iDevice for Development 5 Welcome to the iOS Platform . 5
Becoming an iOS Developer . 9
Creating and Installing a Development Provisioning Profile . 14
Running Your First iOS App . 19
Developer Technology Overview . 20
Further Exploration . 22
Summary . 23
Q&A . 23
Workshop . 24
HOUR 2: Introduction to Xcode and the iOS Simulator 25 Using Xcode . 25
Using the iOS Simulator . 51
Further Exploration . 56
Summary . 57
Q&A . 57
Workshop . 58
HOUR 3: Discovering Objective-C: The Language of Apple Platforms 59 Object-Oriented Programming and Objective-C . 59
Exploring the Objective-C File Structure . 64
Objective-C Programming Basics . 73
Memory Management and ARC . 83
Further Exploration . 86
Trang 6Summary . 86
Q&A . 87
Workshop . 88
HOUR 4: Inside Cocoa Touch 89 What Is Cocoa Touch? . 89
Exploring the iOS Technology Layers . 91
Tracing the iOS Application Life Cycle . 97
Cocoa Fundamentals . 99
Exploring the iOS Frameworks with Xcode . 108
Further Exploration . 113
Summary . 113
Q&A . 114
Workshop . 114
HOUR 5: Exploring Xcode’s Interface Builder 117 Understanding Interface Builder . 117
Creating User Interfaces . 123
Customizing the Interface Appearance . 129
Connecting to Code . 133
Further Exploration . 142
Summary . 143
Q&A . 144
Workshop . 144
HOUR 6: Model-View-Controller Application Design 147 Understanding the Model-View-Controller Paradigm . 147
How Xcode Implements MVC . 149
Using the Single View Application Template . 154
Further Exploration . 171
Summary . 172
Q&A . 172
Workshop . 172
Trang 7HOUR 7: Working with Text, Keyboards, and Buttons 175
Basic User Input and Output . 175
Using Text Fields, Text Views, and Buttons . 177
Further Exploration . 200
Summary . 201
Q&A . 202
Workshop . 202
HOUR 8: Handling Images, Animation, Sliders, and Steppers 205 User Input and Output . 205
Creating and Managing Image Animations, Sliders, and Steppers . 207
Further Exploration . 227
Summary . 228
Q&A . 228
Workshop . 229
HOUR 9: Using Advanced Interface Objects and Views 231 User Input and Output (Continued) . 231
Using Switches, Segmented Controls, and Web Views . 236
Using Scrolling Views . 252
Further Exploration . 258
Summary . 259
Q&A . 259
Workshop . 260
HOUR 10: Getting the User’s Attention 261 Alerting the User . 261
Exploring User Alert Methods . 271
Further Exploration . 288
Summary . 289
Q&A . 289
Workshop . 290
Trang 8HOUR 11:Implementing Multiple Scenes and Popovers 291
Introducing Multiscene Storyboards . 292
Understanding the iPad Popover . 309
Using a Modal Segue . 319
Using a Popover . 328
Further Exploration . 334
Summary . 335
Q&A . 335
Workshop . 336
HOUR 12:Making Choices with Toolbars and Pickers 337 Understanding the Role of Toolbars . 337
Exploring Pickers . 341
Using the Date Picker . 349
Using a Custom Picker . 364
Further Exploration . 380
Summary . 381
Q&A . 381
Workshop . 382
HOUR 13: Advanced Storyboards Using Navigation and Tab Bar Controllers 385 Advanced View Controllers . 386
Exploring Navigation Controllers . 388
Understanding Tab Bar Controllers . 393
Using a Navigation Controller . 398
Using a Tab Bar Controller . 407
Further Exploration . 417
Summary . 417
Q&A . 418
Workshop . 419
Trang 9HOUR 14:Navigating Information Using Table Views and
Understanding Tables . 422
Exploring the Split View Controller (iPad Only) . 430
A Simple Table View Application . 433
Creating a Master-Detail Application . 443
Further Exploration . 460
Summary . 460
Q&A . 461
Workshop . 461
HOUR 15:Reading and Writing Application Data 463 iOS Applications and Data Storage . 463
Data Storage Approaches . 465
Creating Implicit Preferences . 473
Implementing System Settings . 479
Implementing File System Storage . 492
Further Exploration . 500
Summary . 501
Q&A . 501
Workshop . 502
HOUR 16: Building Rotatable and Resizable User Interfaces 503 Rotatable and Resizable Interfaces . 503
Creating Rotatable and Resizable Interfaces with Interface Builder . 508
Reframing Controls on Rotation . 513
Swapping Views on Rotation . 521
Further Exploration . 527
Summary . 527
Q&A . 528
Workshop . 529
Trang 10HOUR 17:Using Advanced Touches and Gestures 531
Multitouch Gesture Recognition . 532
Using Gesture Recognizers . 534
Further Exploration . 553
Summary . 554
Q&A . 554
Workshop . 554
HOUR 18: Sensing Orientation and Motion 557 Understanding Motion Hardware . 558
Accessing Orientation and Motion Data . 560
Sensing Orientation . 564
Detecting Tilt and Rotation . 568
Further Exploration . 579
Summary . 580
Workshop . 581
HOUR 19: Working with Rich Media 583 Exploring Rich Media . 583
The Media Playground Application . 598
Further Exploration . 625
Summary . 626
Q&A . 627
Workshop . 627
HOUR 20: Interacting with Other Applications 629 Extending Application Integration . 629
Using Address Book, Email, Twitter, and Maps Oh My . 641
Further Exploration . 658
Summary . 659
Q&A . 659
Workshop . 660
Trang 11HOUR 21: Implementing Location Services 661
Understanding Core Location . 661
Creating a Location-Aware Application . 668
Using the Magnetic Compass . 678
Further Exploration . 686
Summary . 687
Q&A . 687
Workshop . 688
HOUR 22: Building Background-Aware Applications 691 Understanding iOS Backgrounding . 692
Disabling Backgrounding . 696
Handling Background Suspension . 697
Implementing Local Notifications . 698
Using Task-Specific Background Processing . 701
Completing a Long-Running Background Task . 708
Further Exploration . 714
Summary . 715
Q&A . 715
Workshop . 716
HOUR 23: Building Universal Applications 717 Universal Application Development . 717
Creating a Universal Application (Take 1) . 722
Creating a Universal Application (Take 2) . 726
Using Multiple Targets . 730
Further Exploration . 732
Summary . 733
Q&A . 733
Workshop . 734
Trang 12HOUR 24: Application Tracing and Debugging 735
Instant Feedback with NSLog . 736
Using the Xcode Debugger . 738
Further Exploration . 752
Summary . 753
Q&A . 753
Workshop . 753
Trang 13John Ray is currently serving as a Senior Business Analyst and Development Team
Manager for the Ohio State University Research Foundation He has written numerous
books for Macmillan/Sams/Que, including Using TCP/IP: Special Edition, Teach Yourself
Dreamweaver MX in 21 Days, Mac OS X Unleashed, and Teach Yourself iPad Development in 24 Hours As a Macintosh user since 1984, he strives to ensure that each project presents the
Macintosh with the equality and depth it deserves Even technical titles such as Using TCP/IP
contain extensive information about the Macintosh and its applications and have garnerednumerous positive reviews for their straightforward approach and accessibility to beginnerand intermediate users
You can visit his website at http://teachyourselfios.com or follow him on Twitter at
#iOSIn24
Trang 14To the crazy ones.
Thank you, Steve Jobs.
Acknowledgments
Thank you to the group at Sams Publishing—Laura Norman, Keith Cline, Anne Groves—fornot giving up on this book, despite the changes, delays, and other challenges that weencountered along the way I’m not sure how you manage to keep all of the files, figures,and information straight, but on this end it looks like magic
As always, thanks to my family and friends for feeding me and poking me with a stick tokeep me going
Trang 15As the reader of this book, you are our most important critic and commentator We value
your opinion and want to know what we’re doing right, what we could do better, whatareas you’d like to see us publish in, and any other words of wisdom you’re willing to passour way
You can email or write me directly to let me know what you did or didn’t like about thisbook—as well as what we can do to make our books stronger
Please note that I cannot help you with technical problems related to the topic of this book,and that due to the high volume of mail I receive, I might not be able to reply to everymessage
When you write, please be sure to include this book’s title and author as well as your nameand phone or email address I will carefully review your comments and share them with theauthor and editors who worked on the book
Trang 16In less than half a decade, the iOS platform has changed the way that we, the public, thinkabout our mobile computing devices Only a few years ago, we were thrilled by phones withpostage-stamp-sized screens, tinny audio, built-in tip calculators, and text-based web brows-ing Times have indeed changed With full-featured applications, an interface architecturethat demonstrates that small screens can be effective workspaces, and touch controls unri-valed on any platform, the iPhone brings us the convenience of desktop computing withinour pockets.
When Steve Jobs introduced the iPad, people laughed at the name and the idea that “a bigiPod Touch” could be magical In the 2 years that have passed since its introduction, theiPad has become the de facto standard for tablet computing and shows no signs of slowingdown Rarely a week goes by when I don’t read a review of a new app that is described as
“magical” and that could only have been created on the iPad The excitement and tion surrounding iOS and the sheer enjoyment of using the iOS devices has led it to becomethe mobile platform of choice for users and developers alike
innova-With Apple, the user experience is key The iOS is designed to be controlled with your gers rather than by using a stylus or keypad The applications are “natural” and fun to use,instead of looking and behaving like a clumsy port of a desktop app Everything from inter-face to application performance and battery life has been considered The same cannot besaid for the competition
fin-Through the App Store, Apple has created the ultimate digital distribution system for opers Programmers of any age or affiliation can submit their applications to the App Storefor just the cost of a modest yearly Developer Membership fee Games, utilities, and full-feature applications have been built for everything from pre-K education to retirement liv-ing No matter what the content, with a user base as large as the iPhone, iPod Touch, andiPad, an audience exists
devel-Each year, Apple introduces new devices—bringing larger, faster, and higher-resolutioncapabilities to the iOS family With each new hardware refresh come new developmentopportunities and new ways to explore the boundaries between software and art
Trang 17My hope is that this book will bring iOS development to a new generation of developers.
Teach Yourself iOS 5 Development in 24 Hours provides a clear natural progression of skills
development, from installing developer tools and registering your device with Apple, to mitting an application to the App Store It’s everything you need to get started in 24 one-hour lessons
sub-Who Can Become an iOS Developer?
If you have an interest in learning, time to invest in exploring and practicing with Apple’sdeveloper tools, and an Intel Macintosh computer running Lion, you have everything youneed to begin creating software for iOS
Developing an app won’t happen overnight, but with dedication and practice, you can bewriting your first applications in a matter of days The more time you spend working withthe Apple developer tools, the more opportunities you’ll discover for creating new and excit-ing projects
You should approach iOS application development as creating software that you want to
use, not what you think others want If you’re solely interested in getting rich quick, you’relikely to be disappointed (The App Store is a crowded marketplace—albeit one with a lot ofroom—and competition for top sales is fierce.) However, if you focus on building apps thatare useful and unique, you’re much more likely to find an appreciative audience
Who Should Use This Book?
This book targets individuals who are new to development for the iPhone and iPad and
have experience using the Macintosh platform No previous experience with Objective-C,
Cocoa, or the Apple developer tools is required Of course, if you do have developmentexperience, some of the tools and techniques may be easier to master, but the authors donot assume that you’ve coded before
That said, some things are expected of you, the reader Specifically, you must be willing toinvest in the learning process If you just read each hour’s lesson without working throughthe tutorials, you will likely miss some fundamental concepts In addition, you need tospend time reading the Apple developer documentation and researching the topics pre-sented in this book There is a vast amount of information on iOS development available,and only limited space in this book This book covers what you need to forge your own path forward
Trang 18What Is (and Isn’t) in This Book?
The material in this book specifically targets iOS release 5 and later on Xcode 4.2 and later.Much of what you’ll be learning is common to all the iOS releases, but this book also coversseveral important areas that have only come about in iOS 4 and 5, such as gesture recog-nizers, embedded video playback with AirPlay, Core Image, multitasking, universal
(iPhone/iPad) applications, and more!
Unfortunately, this is not a complete reference for the iOS APIs; some topics just requiremuch more space than this book allows Thankfully, the Apple developer documentation isavailable directly within the free tools you’ll be installing in Hour 1, “Preparing Your Systemand iDevice for Development.” In many hours, you’ll find a section titled “Further
Exploration.” This identifies additional related topics of interest Again, a willingness toexplore is an important quality in becoming a successful developer
Each coding lesson is accompanied by project files that include everything you need to pile and test an example or, preferably, follow along and build the application yourself Besure to download the project files from the book’s website at http://teachyourselfios.com Ifyou have issues with any projects, view the posts on this site to see whether a solution hasbeen posted
com-In addition to the support website, you can follow along on Twitter! Search for #iOScom-In24 onTwitter to receive official updates and tweets from other readers Use the hashtag #iOSIn24
in your tweets to join the conversation To send me messages via Twitter, begin each tweetwith @johnemeryray
Trang 20Preparing Your System and
iDevice for Development
What You’ll Learn in This Hour:
The iOS hardware limitations you face
Where to get the tools you need to develop for iOS devices
How to join the iOS Developer Program
The need for (and use of) provisioning profiles
What to expect during the first few hours of this book
The iOS device family opens up a whole realm of possibilities for developers: Multitouchinterfaces, always-on Internet access, video, and a whole range of built-in sensors can beused to create everything from games to serious productivity applications Believe it ornot, as a new developer, you have an advantage You are starting fresh, free from any pre-conceived notions of what is possible in a mobile application Your next big idea may wellbecome the next big thing on Apple’s App Store
This hour prepares you for your first development project You’re about to embark on theroad to becoming an iOS developer, but you need to do a bit of prep work before you startcoding
Welcome to the iOS Platform
If you’re reading this book, you probably already have an iOS device, and that means youalready understand how to interact with its interface Crisp graphics, amazing responsive-ness, multitouch, and hundreds of thousands of apps—this just begins to scratch the sur-face As a developer, however, you need to get accustomed to dealing with a platformthat, to borrow a phrase from Apple, forces you to “think different.”
Trang 21iOS Devices
The iOS platform family currently consists of the iPhone, iPad, iPod Touch, andApple TV; but at present, the Apple TV is not open for development As you work onthe tutorials in this book, you’ll notice that in many screenshots that I focus oniPhone-centric projects This isn’t because I’m lacking iPad love; it’s because iPadinterfaces are so large it’s difficult to capture them in a screenshot The good news isthat if you want to develop a project on the iPad, you develop it on the iPad! If youwant to develop it for the iPhone, you develop it for the iPhone! In almost all cases,the coding process is identical In the few cases where it isn’t, I make sure youunderstand what is different between the devices (and why) You’ll also find thateach tutorial is available in an iPad and iPhone version on this book’s website(http://teachyourselfios.com), so you can follow along with a working application
on whatever device you choose
Like Apple’s developer tools and documentation, I do not differentiate between theiPhone and iPod Touch in the lessons For all intents and purposes, developing forthese devices is identical, although some capabilities aren’t available in earlierversions of the iPod Touch (but the same can be said for earlier versions of theiPhone and iPad, as well)
Display and Graphics
The iOS devices offer a variety of different resolutions, but iOS provides a simple way
of thinking about them The iPhone screen, for example, is 320×480 points (see
Figure 1.1) Notice that I said points, not pixels Prior to the release of the iPhone 4’s Retina display, the iPhone was 320×480 pixels Now, the actual resolution of an iOS
device is abstracted behind a scaling factor This means that although you may beworking with the numbers 320×480 for positioning elements, you may have morepixels than that The iPhone 4 and 5, for example, have a scaling factor of 2, whichmeans that they are really (320×2) x (480×2) or 640×960 resolution devices
Although that might seem like quite a bit of screen real estate, remember that allthese pixels are displayed on a screen that is roughly 3.5-inch diagonal
The iPad 2, on the other hand, ships with a 1024×768 point screen However, theiPad 2 has a scaling factor of 1, so it is also a 1024×768 pixel screen It is widely
expected that Apple will update the iPad with a Retina display in the next year, at
which time it will still have a 1024×768-point screen but a resolution of 2048×1536pixels and a scaling factor of 2
By the
Way
Trang 22We take a closer look at how scaling factors work when we position objects on the
screen throughout this book The important thing to know is that when you’re
building your applications, iOS automatically takes the scaling factor into play to
display your apps and their interfaces at the highest possible resolution (with
rarely any additional work on your part).
If you have a 27-inch cinema display on your desk, these handheld resolutions may
seem limiting Keep in mind, however, that desktop computers only recently
exceeded this size, and many websites are still designed for 800×600 In addition, an
iOS device’s display is dedicated to the currently running application You have one
window to work in You can change the content within that window, but the desktop
and multiwindow application metaphors are gone
The screen limits aren’t a bad thing As you’ll learn, the iOS development tools give
you plenty of opportunities to create applications with just as much depth as your
desktop software—albeit with a more structured and efficient interface design
The graphics that you display on your screen can include complex animated 2D and
3D displays thanks to the OpenGL ES implementation available on all iOS devices
OpenGL is an industry standard for defining and manipulating graphic images that
320 Points
480 Points
FIGURE 1.1
The iPhonescreen is meas-ured in points—
320×480(portrait),
480×320 scape)—buteach point may
(land-be made up ofmore than 1pixel
Did You Know?
Trang 23is widely used when creating games Each year’s device revisions improve these bilities with more advanced 3D chipsets and rendering abilities, but even the originaliPhone has very respectable imaging abilities.
capa-Application Resource Constraints
As with the HD displays on our desktops and laptops, we’ve grown accustomed toprocessors that can work faster than we can click The iOS devices use a range ofprocessors, from a ~400MHz ARM in the early iPhones to a dual-core 1GHz A5 in theiPad 2 The “A” chips are a “system on a chip” that provide CPU, GPU, and othercapabilities to the device, and this series is the first Apple-designed CPU series to beused in quite awhile
Apple has gone to great lengths to keep the iOS devices responsive regardless of whatyou’re doing Unfortunately, that means that unlike the Mac OS, your device’s capa-bility to multitask is limited Starting in iOS 4, Apple created a limited set of multi-tasking APIs for very specific situations These enable you to perform some tasks inthe background, but your application can never assume that it will remain running.The iOS preserves the user experience above all else
Another constraint that you need to be mindful of is the available memory In the
original iPhone, 128MB of RAM is available for the entire system, including your
appli-cation There is no virtual memory (slower storage space used as RAM), so you must
carefully manage the objects that your application creates In the latest models ofthe iPhone and iPad, Apple has graciously provided 512MB This is great for us, butkeep in mind that there are no RAM upgrades for earlier models
Connectivity
The iPhone and iPad 3G can always be connected to the Internet via a cellularprovider (such as AT&T or Verizon in the United States) This wide-area access is sup-plemented with built-in WiFi and Bluetooth WiFi can provide desktop-like browsingspeeds within the range of a wireless hot spot Bluetooth, on the other hand, can beused to connect a variety of peripheral devices to your device, including a keyboard
As a developer, you can make use of the Internet connectivity to update the content
in your application, display web pages, and create multiplayer games The onlydrawback is that applications that rely heavily on 3G data usage stand a greaterchance of being rejected from the App Store These restrictions have been lessened astime goes by, but what is and isn’t permissible on a 3G network is still a point offrustration among developers
Trang 24Input and Feedback
iOS devices shine when it comes to input and feedback mechanisms and your ability
to work with them You can read the input values from the capacitive multitouch
(up to 11 fingers on the iPad) screen, sense motion and tilt via the accelerometer
and gyroscope (iPhone 4, iPad 2, and later), determine where you are using the GPS
(3G required), see which way you’re facing with the digital compass (iPhone 4, iPad
2, and later), and understand how a device is being used with the proximity and
light sensors iOS can provide so much data to your application about how and
where it is being used that the device itself truly becomes a controller of sorts—much
like (but surpassing) devices such as the Nintendo Wii and PlayStation Move
iOS devices also support capturing pictures and video (iPhone, iPad 2, and later)
directly into your applications, opening a realm of possibilities for interacting with
the real world Already applications are available that identify objects you’ve taken
pictures of and that find references to them online (such as the Amazon Mobile app)
or perform real-time translation of printed text (Word Lens)
Finally, for each action your user takes when interacting with your application, you
can provide feedback This, obviously, can be visible feedback on the screen, or it
can be high-quality audio and force feedback via vibration (iPhone only) As a
developer, you can leverage all these capabilities (as you’ll learn in this book)
That wraps up our quick tour of the iOS platform Never before has a single device
defined and provided so many capabilities for a developer As long as you think
through the resource limitations and plan accordingly, a wealth of development
opportunities await you
Becoming an iOS Developer
Being an iOS developer requires more than just sitting down and writing a program
You need a modern Intel Macintosh desktop or laptop running Snow Leopard or
Lion and at least 6GB of free space on your hard drive The more screen space you
have on your development system, the easier it is to create an effective workspace
Lion users can even take Xcode into fullscreen mode, removing all distractions That
said, I’ve worked perfectly happily on a 13-inch MacBook Air, so an ultra-HD
multi-monitor setup certainly isn’t necessary
So assuming you already have a Mac, what else do you need? The good news is that
there isn’t much more, and it won’t cost you a cent to write your first application.
Trang 25The standard program ($99) is available for both companies and individuals If youwant to publish to the App Store with a business name, you are given the option
of choosing a standard “individual” or “company” program during the registration
Registering as a DeveloperBig or small, free or paid, your venture into iOS development begins on Apple’s web-site To start, visit the Apple iOS Dev Center (http://developer.apple.com/ios), shown
in Figure 1.2 If you have an existing Apple ID from using iTunes, iCloud, or otherApple services, you can use that ID for your developer account If not, or if you want
a new ID to use solely for development, you can create a new Apple ID during theregistration process
Joining the Apple Developer Program
Despite somewhat confusing messages on the Apple website, there really is no feeassociated with joining the Apple Developer Program, downloading the iOS SDK(Software Development Kit), writing iOS applications, and running them on Apple’siOS Simulator
Limitations do apply, however, to what you can do for free If you want to haveearly access to beta versions of the iOS and SDK, you must be a paid member If youwant to load the applications you write on a physical device or distribute them viathe App Store, you also need to pay the membership fee Most applications in thisbook work just fine on the simulator provided with the free tools, so the decision onhow to proceed is up to you
Perhaps you aren’t yet sure whether the paid program is right for you Don’t worry;you can upgrade at any time I recommend that you start with the free programand upgrade after you’ve written a few sample applications and run them in thesimulator
Obviously, things such as motion sensor input and GPS readings can’t be rately presented in the simulator, but these are special cases and aren’t neededuntil later in this book
accu-If you choose to pay, the paid Developer Program offers two levels: a standard gram ($99) for those who will be creating applications that they want to distributefrom the App Store, and an enterprise program ($299) for large (500+ employee)
pro-companies that want to develop and distribute applications in-house but not
through the App Store Most likely, the standard program is what you want
Did You
Know?
By the
Way
Trang 26Click the Register link in the upper right, and then click Get Started on the
subse-quent page When the registration starts, decide whether to create an Apple ID or
jump-start registration by choosing to use an existing Apple ID, as shown in Figure
1.3 After making your choice, click Continue
The registration process walks you through the process of creating a new Apple ID (if
needed) and collects information about your development interests and experience,
as shown in Figure 1.4
If you’ve chosen to create a new ID, Apple verifies your email address by sending
you a clickable link to activate your account
Joining a Paid Developer Program
After you have a registered and activated Apple ID, you can decide to join a paid
program or to continue using the free resources If you choose to join a paid
pro-gram, point your browser to the iOS Developer Program page (http://developer
apple.com/programs/ios/) and click the Enroll Now link After reading the
introduc-tory text, click Continue to begin the enrollment process
When prompted, choose I’m Registered as a Developer with Apple and Would Like to
Enroll in a Paid Apple Developer Program, and then click Continue
FIGURE 1.2
Visit the iOS DevCenter to log in
or start theenrollmentprocess
Trang 28FIGURE 1.5
Choose whichpaid programyou want
The registration tool now guides you through applying for the paid programs,
including choosing between the individual and company options, as shown in
Figure 1.5
Unlike the free developer membership, the paid Developer Program does not take
effect immediately When the App Store first launched, it took months for new
devel-opers to join and be approved into the program Today, however, it might take hours
or a few days Just be patient
Installing the iOS Developer Tools
For Lion (or later) users, downloading the iOS developer tools is as easy as point and
click Open the App Store from your Dock, search for Xcode, and download it for
free, as shown in Figure 1.6 Sit back while your Mac downloads the large (~3GB)
installer If you don’t have Lion, you can download the current-release version of the
iOS developer tools directly from the iOS Dev Center (http://developer.apple.com/ios)
If you have the free developer membership and log in to the iOS Dev Center, you’ll
likely see just a single installer for Xcode and the iOS SDK (the current-release
version of the development tools) If you’ve become a paid program member, you
may see additional links for different versions of the SDK (5.1, 6.0, and so on)
The examples in this book are based on the 5.0+ series of iOS SDKs, so be sure
to choose that option if presented
Did You Know?
Trang 29FIGURE 1.6
Download the
release version
of Xcode from
the App Store
When the download completes, you have either a disk image (if you downloadedfrom the iOS Developer site) or an installer (if you downloaded from the App Store).Open the disk image, if necessary, and run the installer You don’t have to changeany of the defaults during the installation process, so just read and agree to the soft-ware license and click Continue to proceed through the steps
Unlike most applications, the Apple developer tools are installed in a folder calledDeveloper located at the root of your hard drive Inside the Developer folder aredozens of files and folders containing developer frameworks, source code files, exam-ples, and of course, the developer applications themselves Nearly all your work inthis book will be in the application Xcode, located in the Developer/Applicationsfolder and in the Developer group in Launchpad (see Figure 1.7)
Although we won’t get into real development for a few more hours, we will be
config-uring a few options in Xcode in the next section, so don’t forget where it is
Creating and Installing a Development Provisioning Profile
Even after you’ve obtained an Apple developer membership, joined a paid DeveloperProgram, and downloaded and installed the iOS development tools, you still cannotrun any applications that you write on your actual device Why? Because youhaven’t created a development provisioning profile yet
Trang 30Watch Out!
FIGURE 1.7
Most of yourwork will startwith Xcode(which you canfind in theDeveloperfolder)
For Paid Members Only
Only paid developer accounts can complete the following steps If you have a free
developer account, don’t fret; you can use the iOS Simulator to test your apps
until you’re ready for a paid membership Skip ahead to “Running Your First iOS
App,” later in this hour
In many development guides, this step isn’t covered until after development begins
In my mind, once you’ve written an application, you’re going to want to run it on a
real device immediately Why? Because it’s just cool to see your own code running on
your own iPhone or iPad!
What’s a Development Provisioning Profile?
Like it or not, Apple’s current approach to iOS development is to make absolutely
certain that the development process is controlled—and that groups can’t just
distrib-ute software to anyone they want The result is a rather confusing process that ties
together information about you, any development team members, and your
applica-tion into a “provisioning profile.”
A development provisioning profile identifies the developer who may install an
application, an ID for the application being developed, and the “unique device
iden-tifiers” for each device that will run the application This is only for the development
process When you are ready to distribute an application via the App Store or to a
group of testers (or friends) via ad hoc means, you must create a separate
“distribu-tion” profile Because we’re just starting out, this isn’t something you need right
away
Trang 31Configuring a Device for Development
In the past, creating a provisioning profile for the sole purpose of development was afrustrating and time-consuming activity that took place in an area of the iOS devel-oper site called the Provisioning Portal Apple has dramatically streamlined theprocess in recent versions of Xcode, making provisioning as simple as connectingyour device and clicking a button
To install the development profile, first make sure that your device is connected toyour computer, and then launch Xcode When Xcode first launches, dismiss any
“Welcome” windows that appear, and then immediately choose Window, Organizerfrom the menu The Organizer utility slightly resembles iTunes in its layout Youshould see your iOS device listed in the leftmost column of the Organizer under theDevices section, as shown in Figure 1.8
Click the device icon to select it, and then click the Use for Development button Yourscreen should now resemble Figure 1.8
Next, click the Use for Development button located near the center of the screen.When prompted, provide the Apple ID login associated with your paid developermembership Be sure to click the Remember Password in Keychain check box so thatyou can access online developer resources through Xcode without encountering addi-tional prompts
In the background, Xcode is adding a unique identity to the iOS developer portalthat identifies you and will be used to digitally sign any applications you generate It
Trang 32FIGURE 1.9
Submit arequest for anew develop-ment certificate
also registers your device with Apple so that it can run the software you create (and
beta releases of iOS) If this is the first time you’ve been through the process, you are
asked whether a development certificate should be generated, as shown in Figure
1.9 Click Submit Request to continue
Xcode continues to communicate with Apple to create a development profile that
will be named Team Provisioning Profile as well as a unique App ID This ID
identi-fies a shared portion of the iOS device keychain to which your application will have
access
The keychain is a secure information store on iOS devices that can be used to
save passwords and other critical information Most apps don’t share a keychain
space (and therefore cannot share protected information) If you use the same
App ID for multiple applications, however, those applications can share keychain
data
For the purposes of this book, there’s no reason the tutorial apps can’t share a
single App ID, so letting Xcode generate an ID for us is just fine Xcode will, in
fact, create a “wildcard” App ID that will be applied to any application you create
using the Team Provisioning Profile
Finally, Apple’s servers use all of this information, along with the unique identifier of
your connected iOS device, to provide Xcode with a completed provisioning profile
Xcode then transparently uploads the profile to your device
Did You Know?
Trang 33But Wait I Have More Than One iOS Device
We’ve discussed provisioning a single device for development But what if youhave multiple devices that you want to install onto? No problem Just connect theadditional devices and use the Use for Development button to add them to youraccount and provision them
Apple allows a total of 100 unique devices to be used on your account within the
span of 1 year, so be judicious in registering devices if you plan to do extensivein-house development testing
After you have a development machine configured, you can easily configure othercomputers using the Developer Profile item in the Xcode Organizer’s Library TheExport Developer Profile and Import Developer Profile buttons export (and subse-quently import) all your developer profiles/certificates in a single package
Did You
Know?
Trang 34FIGURE 1.11
The opened ect should look
proj-a bit like this
Running Your First iOS App
It seems wrong to go through a whole hour about getting ready for iOS development
without any payoff, right? For a real-world test of your efforts, let’s actually try to
run an application on your iOS device If you haven’t downloaded the project files to
your computer, now is a good time to visit http://teachyourselfiOS.com and
down-load the archives
Within the Hour 1 Projects folder, open the Welcome folder Double-click
Welcome.xcodeproj to open a simple application in Xcode After the project opens,
your display should be similar to Figure 1.11
Next, make sure that your iOS Device is plugged into your computer Using the
Scheme pop-up menu in the upper-left corner of the Xcode window, choose the name
of your device, as shown in Figure 1.12 This tells Xcode that when the project is built
it should be installed on your device, not run in the simulator If you don’t have a
paid developer membership, choose either the iPhone Simulator or iPad Simulator
option, depending on which version of the project you’re using
Typically, you see just one option for running an application on either the iPhone
Simulator or the iPad Simulator In Figure 1.12, you see both This occurs when
you are using an iPhone-targeted app (because they run on iPhones and iPads) or
when an app is a universal application (more on that later in the book) In this
case, the screenshot was captured using the iPhone version of the project so that
both options could be seen
By the Way
Trang 35Finally, click the Run button in the upper-left corner of the window After a few onds, the application should be installed and launched on your device Because Ican’t actually show you my device running the app, Figure 1.13 demonstrates what
sec-it looks like in the iPad Simulator
Click Stop in the Xcode toolbar to exit the application You can now quit Xcode—we’re done with it for the day
When you clicked Run, the Welcome application was installed and started on youriOS device It remains there until you remove it manually Just touch and hold theWelcome icon until it starts wiggling, and then delete the application as you wouldany other Applications installed with your development certificate stop workingwhen the certificate expires (120 days after issuance)
Developer Technology OverviewOver the course of the next few hours, you are introduced to the technologies thatyou’ll be using to create iOS applications The goal is to get you up to speed on thetools and technology, and then you can start actively developing This means you’restill a few hours away from writing your first app, but when you start coding, you’llhave the necessary background skills and knowledge to successfully create a widevariety of applications
FIGURE 1.12
Choose where
you want the
app to run (on a
device or in the
simulator)
By the
Way
Trang 36FIGURE 1.13
Congratulations!You’ve justinstalled yourfirst homegrowniOS application
The Apple Developer Suite
In this hour, you downloaded and worked with the Xcode application This, coupled
with the iOS Simulator, will be your home for the duration of the book These two
applications are so critical, in fact, that we spend 2 hours (Hour 2, “Introduction to
Xcode and the iOS Simulator,” and Hour 5, “Exploring Xcode’s Interface Builder”)
covering their capabilities and use
It’s worth mentioning that almost every iPhone, iPad, iPod, and Macintosh
applica-tion you run, whether created by a single developer at home or by a huge company,
is built using the Apple developer tools This means that you have everything you
need to create software as powerful as any you’ve ever run
Objective-C
Objective-C is the language that you’ll be using to write your applications It
pro-vides the structure for our applications and controls the logic and decision making
that goes on when an application is running
Trang 37If you’ve never worked with a programming language before, don’t worry Hour 3,
“Discovering Objective-C: The Language of Apple Platforms,” covers everything youneed to get started Developing for iOS in Objective-C is a unique programmingexperience, even if you’ve used other programming languages in the past The lan-guage is unobtrusive and structured in a way that makes it easy to follow After yourfirst few projects, Objective-C will fade into the background, letting you concentrate
on the specifics of your application
Cocoa Touch
While Objective-C defines the structure for iOS applications, Cocoa Touch defines
the functional building blocks, called classes, that can make iOS devices perform
cer-tain actions Cocoa Touch isn’t a “thing,” per se, but a collection of interface ments, data storage elements, and other handy tools that you can access from yourapplications
ele-As you’ll learn in Hour 4, “Inside Cocoa Touch,” you can access literally hundreds
of different Cocoa Touch classes and do thousands of things with them This bookcovers quite a few of the most useful classes and gives you the pointers necessary toexplore even more on your own
Model-View-Controller
The iOS platform and Macintosh use a development approach called Controller (MVC) to structure applications Understanding why MVC is used and thebenefits it provides will help you make good decisions in structuring your most com-plex applications Despite the complicated-sounding name, MVC is really just a way
Model-View-to keep your application projects arranged so that you can easily update and extendthem in the future You learn more about MVC in Hour 6, “Model-View-ControllerApplication Design.”
Further ExplorationXcode is the cornerstone of your iOS development experience You will design, code,and test your apps in Xcode You’ll provision your devices and even submit apps tothe App Store, all through Xcode Noticing my emphasis? Xcode Xcode Xcode.Although we’ll be spending time going through the Xcode features now, take amoment to watch Apple’s introductory videos to get a sense for what you’ll be see-ing To do this, open Xcode, and then choose Xcode Help from the Help menu.The more you familiarize yourself with the tools, the quicker you’ll be able to usethem to build production-ready applications
Trang 38This hour introduced you to the iOS platform, its capabilities, and its limitations
You learned about the different iOS devices’ graphic features, RAM sizes, and the
various sensors that you can use in your applications to create uniquely “aware”
experiences We also discussed the Apple iOS developer tools, how to download and
install them, and the differences between the various paid Developer Programs To
prepare you for actual on-phone development, you explored the process of creating
and installing a development provisioning profile in Xcode and even installed an
application on your device
The hour wrapped up with a quick discussion about the development technologies
that make up the first part of this book and form the basis for all the iOS
develop-ment you’ll be doing
Q&A
Q I thought that iOS devices ranged from a minimum of 16GB of RAM in the
low-end iPad and iPhone to 64GB on the high-end models Don’t they?
A The “memory” capabilities of devices that are advertised to the public are the
storage sizes available for applications, songs, and so forth It is separate from
the RAM that can be used for executing programs If Apple implements
vir-tual memory in a future version of iOS, it is possible that the larger storage
could be used for increasing available RAM
Q What platform should I target for development?
A That depends on your goals If you want to reach the largest audience,
con-sider a universal application that works on the iPhone, iPad, and iPod Touch
We explore this in a few projects later in this book If you want to make use of
the most-capable hardware, you can certainly target the unique capabilities of
a specific device, but by doing so you might be limiting the size of your
cus-tomer base
Q Why isn’t the iOS platform open?
A Great question Apple has long sought to control the user experience so that it
remains “positive” regardless of how users have set up their device, be it a
Mac, an iPad, or an iPhone By ensuring that applications can be tied to a
developer and by enforcing an approval process, Apple attempts to limit the
Trang 39potential for a harmful application to cause damage to data or otherwise atively impact the user Whether this is an appropriate approach, however, isopen to debate.
neg-Workshop
Quiz
1 What is the resolution of the iPhone screen?
2 What is the cost of joining an individual iOS Developer Program?
3 What language will you use when creating iOS applications?
Answers
1 Trick question The iPhone screen has 320×480 points, but you can’t tell howmany pixels unless you multiply by the scaling factor The iPhone 4 and 5have a scaling factor of 2; all other models have a scaling factor of 1
2 The Developer Program costs $99 a year for the individual option
3 Objective-C is used for iOS development
Activities
1 Establish an Apple developer membership and download and install thedeveloper tools This is an important activity that you should completedbefore starting the next hour’s lesson (if you didn’t do so while following along
in this hour)
2 Review the resources available in the iOS Dev Center Apple has publishedseveral introductory videos and tutorials that supplement what you’ll learn inthis book
Trang 40Introduction to Xcode and the iOS Simulator
What You’ll Learn in This Hour:
How to create new projects in Xcode
Code editing and navigation features
Where to add classes and resources to a project
How to modify project properties
Compiling for iOS devices and the iOS Simulator
How to interpret error messages
Features and limitations of the iOS Simulator
The core of your work in the Apple Developer Suite will be spent in two applications:Xcode and the iOS Simulator These apps provides all the tools that you need to design,program, and test applications for the iPhone and iPad And, unlike other platforms, theApple Developer Suite is entirely free
This hour walks you through the basics you need to work with Xcode’s code-editing toolsand the iOS Simulator, and you get some hands-on practice working with each We coverXcode’s interface-creation tools in Hour 5, “Exploring Xcode’s Interface Builder.”
Using Xcode
When you think of coding—actually typing the statements that will make your iDevicemeet Apple’s “magical” mantra—think Xcode Xcode is the IDE, or integrated develop-ment environment, that manages your application’s resources and lets you edit the codeand user interface that ties the different pieces together