Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 750 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
750
Dung lượng
24,19 MB
Nội dung
www.it-ebooks.info
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
www.it-ebooks.info
v
Contents at a Glance
About the Authors �������������������������������������������������������������������������������������������������������������� xxi
About the Technical Reviewers ��������������������������������������������������������������������������������������� xxiii
Chapter 1: Welcome to the Jungle ■ �������������������������������������������������������������������������������������1
Chapter 2: Appeasing the Tiki Gods ■ ���������������������������������������������������������������������������������11
Chapter 3: Handling Basic Interaction ■ �����������������������������������������������������������������������������43
Chapter 4: More User Interface Fun ■ ��������������������������������������������������������������������������������69
Chapter 5: Autorotation and Autosizing ■ ������������������������������������������������������������������������115
Chapter 6: Multiview Applications ■ ��������������������������������������������������������������������������������139
Chapter 7: Tab Bars and Pickers ■ �����������������������������������������������������������������������������������169
Chapter 8: Introduction to Table Views ■ �������������������������������������������������������������������������221
Chapter 9: Navigation Controllers and Table Views ■ �������������������������������������������������������269
Chapter 10: Storyboards ■ ������������������������������������������������������������������������������������������������341
Chapter 11: iPad Considerations ■ �����������������������������������������������������������������������������������367
Chapter 12: Application Settings and User Defaults ■ ������������������������������������������������������397
Chapter 13: Basic Data Persistence ■ ������������������������������������������������������������������������������435
Chapter 14: Hey! You! Get onto iCloud! ■ �������������������������������������������������������������������������481
www.it-ebooks.info
vi Contents at a Glance
Chapter 15: Grand Central Dispatch, Background Processing, and You ■ ������������������������511
Chapter 16: Drawing with Quartz and OpenGL ■ ��������������������������������������������������������������545
Chapter 17: Taps, Touches, and Gestures ■ ����������������������������������������������������������������������585
Chapter 18: Where Am I? Finding Your Way with Core Location and Map Kit ■ ���������������619
Chapter 19: Whee! Gyro and Accelerometer! ■ ����������������������������������������������������������������637
Chapter 20: The Camera and Photo Library ■ �������������������������������������������������������������������667
Chapter 21: Collection View ■ ������������������������������������������������������������������������������������������677
Chapter 22: Application Localization ■ �����������������������������������������������������������������������������691
Appendix A: Where to Next? ■ ������������������������������������������������������������������������������������������717
Index ���������������������������������������������������������������������������������������������������������������������������������725
www.it-ebooks.info
1
Chapter 1
Welcome to the Jungle
So, you want to write iPhone, iPod touch, and iPad applications? Well, we can’t say that we blame
you. iOS, the core software of all of these devices, is an exciting platform that has been seeing
explosive growth since it first came out in 2007. The rise of the mobile software platform means that
people are using software everywhere they go. With the release of iOS 6, and the latest incarnation
of theiOS software development kit (SDK), things have only gotten better and more interesting.
What This Book Is
This book is a guide to help you get started down the path to creating your own iOS applications.
Our goal is to get you past the initial difficulties, to help you understand the way iOS applications
work and how they are built.
As you work your way through this book, you will create a number of small applications, each
designed to highlight specific iOS features and to show you how to control or interact with those
features. If you combine the foundation you’ll gain through this book with your own creativity and
determination, and then add in the extensive and well-written documentation provided by Apple,
you’ll have everything you need to build your own professional iPhone and iPad applications.
Tip Dave, Jack, Jeff, and Fredrik have set up a forum for this book. It’s a great place to meet like-minded
folks, get your questions answered, and even answer other people’s questions. The forum is at
http://forum.learncocoa.org. Be sure to check it out!
What You Need
Before you can begin writing software for iOS, you’ll need a few items. For starters, you’ll need
an Intel-based Macintosh, running Lion (OS X 10.7) or later. Any recent Intel-based Macintosh
computer—laptop or desktop—should work just fine.
www.it-ebooks.info
2 CHAPTER 1: Welcome to the Jungle
You’ll also need to sign up to become a registered iOS developer. Apple requires this step before
you’re allowed to download theiOS SDK.
To sign up as a developer, just navigate to http://developer.apple.com/ios/. That will bring you to
a page similar to the one shown in Figure 1-1.
Figure 1-1. Apple’s iOS Dev Center website
First, click on Log in. You’ll be prompted for your Apple ID. If you don’t have an Apple ID, click
Join now, create one, and then log in. Once you are logged in, you’ll be taken to the main iOS
development page. Not only will you see a link to theSDK download, but you’ll also find links to a
wealth of documentation, videos, sample code, and the like—all dedicated to teaching you the finer
points of iOS application development.
The most important tool you’ll be using to develop iOS applications is called Xcode. Xcode is
Apple’s integrated development environment (IDE). Xcode includes tools for creating and debugging
source code, compiling applications, and performance tuning the applications you’ve written.
You can download Xcode from the Mac App Store, which you can access from your Mac’s Apple
menu.
www.it-ebooks.info
3CHAPTER 1: Welcome to the Jungle
As the versions of theSDK and Xcode evolve, the mechanism for downloading them will also change. Starting with the
release of Xcode 4.3, Apple has been publishing the current “stable” version of Xcode and theiOSSDK on the Mac App
Store, while simultaneously often providing developers the ability to download preview versions of upcoming releases
from their developer site. Bottom line: you want to download the latest released (non-beta) version of Xcode and theiOS
SDK, so use the Mac App Store.
This book has been written to work with the latest version of the SDK. In some places, we have chosen to use new
functions or methods introduced with iOS6 that may prove incompatible with earlier versions of the SDK. We’ll be sure to
point those situations out as they arise in this book.
Be sure to download the latest and greatest source code archives from http://iphonedevbook.com or from the
book’s forum at http://forum.learncocoa.org. We’ll update the code as new versions of theSDK are released, so
be sure to check the site periodically.
Developer Options
The free SDK download option includes a simulator that will allow you to build and run iPhone and
iPad apps on your Mac. This is perfect for learning how to program for iOS. However, the simulator
does not support many hardware-dependent features, such as the accelerometer and camera. Also,
the free option will not allow you to download your applications onto your actual iPhone or other
device, and it does not give you the ability to distribute your applications on Apple’s App Store. For
those capabilities, you’ll need to sign up for one of the other options, which aren’t free:
The Standard program costs $99/year. It provides a host of development tools
and resources, technical support, distribution of your application via Apple’s App
Store, and, most important, the ability to test and debug your code on an iOS
device, rather than just in the simulator.
The Enterprise program costs $299/year. It is designed for companies
developing proprietary, in-house iOS applications.
For more details on these programs, visit http://developer.apple.com/programs/ios and
http://developer.apple.com/programs/ios/enterprise to compare the two.
Because iOS supports an always-connected mobile device that uses other companies’ wireless
infrastructure, Apple has needed to place far more restrictions on iOS developers than it ever has on Mac
developers (who are able—at the moment anyway—to write and distribute programs with absolutely no
oversight or approval from Apple). Even though the iPod touch and the Wi-Fi-only versions of the iPad
don’t use anyone else’s infrastructure, they’re still subject to these same restrictions.
Apple has not added restrictions to be mean, but rather as an attempt to minimize the chances of
malicious or poorly written programs being distributed that could degrade performance on the shared
network. Developing for iOS may appear to present a lot of hoops to jump through, but Apple has
expended quite an effort to make the process as painless as possible. And also consider that $99 is
still much less than buying, for example, Visual Studio, which is Microsoft’s software development IDE.
SDK VERSIONS AND SOURCE CODE FOR THE EXAMPLES
www.it-ebooks.info
4 CHAPTER 1: Welcome to the Jungle
This may seem obvious, but you’ll also need an iPhone, iPod touch, or iPad. While much of your
code can be tested using theiOS simulator, not all programs can be. And even those that can run
on the simulator really need to be thoroughly tested on an actual device before you ever consider
releasing your application to the public.
Note If you are going to sign up for the Standard or Enterprise program, you should do it right now.
The approval process can take a while, and you’ll need that approval to be able to run your applications
on an actual device. Don’t worry, though, because all the projects in the first several chapters and the
majority of the applications in this book will run just fine on theiOS simulator.
What You Need to Know
This book assumes that you already have some programming knowledge. It assumes that you
understand the fundamentals of object-oriented programming (you know what objects, loops, and
variables are, for example). It also assumes that you are familiar with the Objective-C programming
language. Cocoa Touch, the part of theSDK that you will be working with through most of this book,
uses the latest version of Objective-C, which contains several new features not present in earlier
versions. But don’t worry if you’re not familiar with the more recent additions to the Objective-C
language. We highlight any of the new language features we take advantage of, and explain how
they work and why we are using them.
You should also be familiar with iOS itself, as a user. Just as you would with any platform for which
you wanted to write an application, get to know the nuances and quirks of the iPhone, iPad, or iPod
touch. Take the time to get familiar with theiOS interface and with the way Apple’s iPhone and/or
iPad applications look and feel.
NEW TO OBJECTIVE-C?
If you have not programmed in Objective-C before, here are a few resources to help you get started:
Check out • Learn Objective-C on the Mac: For OS X and iOS (2nd edition, Apress, 2012):,
an excellent and approachable introduction to Objective-C by Mac-programming experts Scott Knaster,
Waqar Malik, and Mark Dalrymple: http://www.apress.com/book/view/9781430241881.
See Apple’s introduction to the language, Learning Objective-C: A Primer.•
Take a look at • The Objective-C Programming Language, a very detailed and extensive description of the
language and a great reference guide.
The last two are available from http://developer.apple.com/library/ios/navigation/. That last one is also
available as a free download from iBooks on your iPhone, iPod touch, or iPad. It’s perfect for reading on the go! Apple
has released several developer titles in this format, and we hope that more are on the way. Search for “Apple developer
publications” in iBooks to find them.
www.it-ebooks.info
5CHAPTER 1: Welcome to the Jungle
What’s Different About Coding for iOS?
If you have never programmed in Cocoa or its predecessors NeXTSTEP or OpenStep, you may
find Cocoa Touch—the application framework you’ll be using to write iOS applications—a little alien.
It has some fundamental differences from other common application frameworks, such as those
used when building .NET or Java applications. Don’t worry too much if you feel a little lost at first.
Just keep plugging away at the exercises, and it will all start to fall into place after a while.
If you have written programs using Cocoa or NeXTSTEP, a lot in theiOSSDK will be familiar to
you. A great many classes are unchanged from the versions that are used to develop for OS X.
Even those that are different tend to follow the same basic principles and similar design patterns.
However, several differences exist between Cocoa and Cocoa Touch.
Regardless of your background, you need to keep in mind some key differences between iOS
development and desktop application development. These differences are discussed in the
following sections.
Only One Active Application
On iOS, only one application can be active and displayed on the screen at any given time. Since
iOS 4, applications have been able to run in the background after the user presses the “home”
button, but even that is limited to a narrow set of situations, and you must code for it specifically.
When your application isn’t active or running in the background, it doesn’t receive any attention
whatsoever from the CPU, which will wreak havoc with open network connections and the like. iOS
allows background processing, but making your apps play nicely in this situation will require some
effort on your part.
Only One Window
Desktop and laptop operating systems allow many running programs to coexist, each with the ability
to create and control multiple windows. However, iOS gives your application just one “window” to
work with. All of your application’s interaction with the user takes place inside this one window, and
its size is fixed at the size of the screen.
Limited Access
Programs on a computer pretty much have access to everything the user who launched them does.
However, iOS seriously restricts what your application can access.
You can read and write files only from the part of iOS’s file system that was created for your
application. This area is called your application’s sandbox. Your sandbox is where your application
will store documents, preferences, and every other kind of data it may need to retain.
Your application is also constrained in some other ways. You will not be able to access low-number
network ports on iOS, for example, or do anything else that would typically require root or
administrative access on a desktop computer.
www.it-ebooks.info
6 CHAPTER 1: Welcome to the Jungle
Limited Response Time
Because of the way it is used, iOS needs to be snappy, and it expects the same of your application.
When your program is launched, you need to get your application open, preferences and data
loaded, and the main view shown on the screen as fast as possible—in no more than a few seconds.
At any time when your program is running, it may have the rug pulled out from under it. If the user
presses the home button, iOS goes home, and you must quickly save everything and quit. If you
take longer than five seconds to save and give up control, your application process will be killed,
regardless of whether you are finished saving.
Note that since iOS 5, this situation has been ameliorated somewhat by the existence of new API
that allows your app to ask for additional time to work when it’s about to go dark.
Limited Screen Size
The iPhone’s screen is really nice. When introduced, it was the highest resolution screen available on
a consumer device, by far.
But the iPhone display just isn’t all that big, and as a result, you have a lot less room to work with
than on modern computers. The screen is just 320 × 480 on the first few iPhone generations, and
was later doubled in both directions to 640 × 960 with the introduction of the iPhone 4’s retina
display. This was recently increased further to 640 × 1136 on the iPhone 5. That sounds like a decent
number of pixels, but keep in minde that these retina displays are crammed into pretty small form
factors, so you can’t count on fitting more controls or anything like that. This has a big impact on the
kinds of applications and interactivity you can offer on an iPhone.
The iPad increases the available space a bit by offering a 1024 × 768 display, but even today, that’s
not so terribly large. To give an interesting contrast, at the time of writing, Apple’s least expensive
iMac supports 1920 × 1080 pixels, and its least expensive notebook computer, the 11-inch MacBook
Air, supports 1366 × 768 pixels. On the other end of the spectrum, Apple’s largest current monitor,
the 27-inch LED Cinema Display, offers a whopping 2560 × 1440 pixels. Note that the 3
rd
generation
iPad released in the spring of 2012 (which Apple confusingly calls the “new iPad” instead of
incrementing the number from the previous iPad 2) actually doubles the screen resolution in both
directions. But as with the retina iPhones, that 2048 × 1536 screen is in the same physical space as
the old screen was, so you can’t really count on using those pixels the same way you would on a
traditional screen.
Limited System Resources
Any old-time programmers who are reading this are likely laughing at the idea of a machine with
at least 512MB of RAM and 16GB of storage being in any way resource-constrained, but it is
true. Developing for iOS is not, perhaps, in exactly the same league as trying to write a complex
spreadsheet application on a machine with 48KB of memory. But given the graphical nature of iOS
and all it is capable of doing, running out of memory is very easy.
The iOS devices available right now have either 512MB (iPhone 4, iPhone 4S, iPad 2), or 1024MB of
physical RAM (iPhone 5, new iPad), though that will likely increase over time. Some of that memory
is used for the screen buffer and by other system processes. Usually, no more than half of that
www.it-ebooks.info
[...]... regardless of whether the extension actually used for the file is xib or nib In fact, Apple still uses the terms nib and nib file throughout its documentation The gray vertical bar on the left edge of the graph paper is known as the dock The dock contains an icon for each top-level object in the nib file If you click the triangle-in-a-circle icon just to the right of the bottom of the dock, you’ll see... of the iOS development community has been phenomenal TheSDK has continually evolved, with Apple releasing a steady stream of SDK updates Well, we’ve been busy, too! The second we found out about iOS SDK 6, we immediately went to work, updating every single project to ensure not only that the code compiles using the latest version of Xcode and the SDK, but also that each one takes advantage of the. .. the tail end of the jump bar is a pop-up that shows the methods and other symbols contained by the currently selected file The jump bar in Figure 2-14 shows the file BIDAppDelegate.m, with a submenu listing the symbols defined in that file Figure 2-14. The Xcode editor pane showing the jump bar, with a source code file selected The submenu shows the list of methods in the selected file The jump bar is... What’s in the Nib File? As we mentioned earlier, the contents of the nib file are represented by icons or a list in the dock immediately to the left of the editor pane (see Figure 2-15) Every nib file starts off with the same two icons: File’s Owner and First Responder These two are created automatically and cannot be deleted Furthermore, they are visually separated from the objects you add to the nib... Builder Everything above the library but below the toolbar is known collectively as the inspector www.it-ebooks.info 32 CHAPTER 2: Appeasing the Tiki Gods The bottom half of the utility view is called the library pane, or just plain library The library is a collection of reusable items you can use in your own programs The four icons in the bar at the top of the library pane divide the library into four... View” section earlier in the chapter) or by pressing 1 Tip The seven navigator configurations can be accessed using the keyboard shortcuts 1 to 7 The numbers correspond to the icons starting on the left, so 1 is the project navigator, 2 is the symbol navigator, and so on up to 7, which takes you to the log navigator The first item in the project navigator list bears the same name as your project—in... called previously, in the order they were called Click a method, and the associated code appears in the editor pane In the editor, there will be a second frame, where you can control the debugging process, display and modify data values, and access the low-level debugger A slider at the bottom of the debug navigator allows you to control the level of detail it tracks Slide to the extreme right to see... include the current file To the right of the über menu are left and right arrows that take you back to the previous file and return to the next file, respectively The jump bar includes a segmented pop-up that displays the files for the current project that can be displayed for the current editor In Figure 2-14, we’re in the source code editor, so we see all the source files in our project At the tail... that the iOSSDK contains some functionality that is not currently present in Cocoa or, at least, is not available on every Mac: The iOSSDK provides a way for your application to determine theiOS device’s current geographic coordinates using Core Location Most iOS devices have built-in cameras and photo libraries, and theSDK provides mechanisms that allow your application to access both iOS. .. sounds, and movies Note The items in the object library are primarily from theiOS UIKit, which is a framework of objects used to create an app’s user interface UIKit fulfills the same role in Cocoa Touch as AppKit does in Cocoa The two frameworks are similar conceptually, but because of differences in the platforms, there are obviously many differences between them On the other hand, the Foundation framework . supports 1 366 × 768 pixels. On the other end of the spectrum, Apple’s largest current monitor,
the 27-inch LED Cinema Display, offers a whopping 2 560 × 1440. 1: Welcome to the Jungle
As the versions of the SDK and Xcode evolve, the mechanism for downloading them will also change. Starting with the
release of