Tải bản đầy đủ

Xcode 4 cookbook


Xcode 4 Cookbook

Over 100 recipes to build your own fun and exciting
iOS applications

Steven F. Daniel



Xcode 4 Cookbook
Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system,
or transmitted in any form or by any means, without the prior written permission of the
publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the
information presented. However, the information contained in this book is sold without
warranty, either express or implied. Neither the author, nor Packt Publishing, and its
dealers and distributors will be held liable for any damages caused or alleged to be
caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the
companies and products mentioned in this book by the appropriate use of capitals.
However, Packt Publishing cannot guarantee the accuracy of this information.

First published: May 2013

Production Reference: 1160513

Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84969-334-9

Cover Image by Evelyn lam (yeeyean@gmail.com)



Technical Editors

Steven F. Daniel

Kaustubh Mayekar
Ankita Meshram

Bob Sander-Cederlof
Dave Hersey
Jean-Yves Mengant
Robert Wohnoutka

Veena Pagare
Akshata Patil
Zafeer Rais
Monica Ajmera Mehta

Acquisition Editor
Mary Nadar

Ronak Dhruv

Lead Technical Editor
Dayan Hyames

Production Coordinator
Manu Joseph

Project Coordinator
Amey Sawant

Cover Work
Manu Joseph

Amy Guest


About the Author
Steven F. Daniel is originally from London, England, but lives in Australia.
He is the owner and founder of GENIESOFT STUDIOS (http://www.geniesoftstudios.
com/), a software development company based in Melbourne, Victoria, that currently
develops games and business applications for the iOS, Android, and Windows platforms.
Steven is an experienced software developer with more than 13 years of experience
developing desktop and web-based applications for a number of companies including,
insurance, banking and finance, oil and gas, and local and state government.
Steven is always interested in emerging technologies, and is a member of the SQL Server
Special Interest Group (SQLSIG) and the Java Community. He has been the co-founder and
Chief Technology Officer (CTO) of SoftMpire Pty Ltd., a company that focused primarily on
developing business applications for the iOS and Android platforms.
He is the author of Xcode 4 iOS Development Beginner's Guide, iOS 5 Essentials, and iPad
Enterprise Application Development Blueprints.
You can check out his blog at http://geniesoftstudios.com/blog/, or follow him
on twitter at http://twitter.com/GenieSoftStudio.


No book is the product of just the author—he just happens to be the one with
his name on the cover. A number of people contributed to the success of this
book, and it would take more space if I have to thank each one individually.
A special shout-out goes to Mary Nadar, my acquisition editor, who is the
reason that this book exists. Thank you Mary for believing in me and for
being a wonderful guide throughout this whole process. I would like to thank
Amey Sawant for ensuring that I stayed on track and got my chapters in on
time, and to Dayan Hyames for his brilliant suggestive approach with the
chapter rewrites.
I would also like to extend my thanks to each of my Technical Editors for
their brilliant suggestions and improvements to each chapter, as well as
ensuring that we met our timeframes, and delivery for this book. It has
been a great privilege to work with each of you on this book.
Lastly, to my reviewers, thank you so much for your valued suggestions and
improvements, making this book what it is. I am grateful to each and every
one of you.
Thank you also to the entire Packt Publishing team for working so diligently to
help bring out a high quality product. Finally, a big thank you to the engineers
at Apple for creating the iPhone and the iPad, and providing developers with
the tools to create fun and sophisticated applications. You guys rock.
Finally, I'd like to thank all of my friends for their support, understanding,
and encouragement during the writing process. It is a privilege to know
each and every one of you.


About the Reviewers
Bob Sander-Cederlof has been programming for over 55 years, including 21 years at

Adobe Systems. During the Apple II era, as owner of S-C Software Corporation, Bob published
the Apple Assembly Line newsletter for over eight years, along with software such as
the S-C Macro Assembler. Other interests include Christianity, the Bible, and genealogy.
More at http://www.txbobsc.com.

Dave Hersey has over 35 years of experience in Apple software development, dating back

to the Apple II personal computer in 1977. In 2000, after over 6 years in software engineering
at Apple Computer, Dave started Paracoders Inc. focusing on custom Mac OS X-based
application and driver development. In 2008, Dave's company expanded into iOS (iPhone)
mobile applications, followed by Android applications soon after. Some big-named clients
including Paramount Home Entertainment, Lionsgate Entertainment, Seagate, Creative Labs,
Monterey Bay Aquarium, and Kraft Foods. Most recently, Dave's business has expanded to
include additional mobile and server-side platforms as well as support services. As a result,
the custom software development division of Paracoders now operates as "Torchlight Apps"
Dave was also a technical reviewer for Creating Games with cocos2d for iPhone 2 and HTML5
Game Development with GameMaker. When he's not learning new technologies, developing
software, or reviewing books, Dave stays busy with his wife raising three children, three dogs,
two parakeets, and about 22 ducks at last count.


Jean-Yves Mengant is the CTO at SEFAS Innovation, a French software editor. He lives in
France in the Paris area.

Jean-Yves has been in the IT industry for more than 30 years, working on many technologies and
languages from Mainframes MVS to Unixes Mac IOS and Android in Assembly Java, C++, and
Objective-C. He has written articles for Linux Journal, C++ users Journal, and Dr Dobbs journal.
I would like to thank my beloved wife Martine, for supporting my work during
all those years, and and my family Jean-Christophe, Aline, Mathieu, and Julie,
who I love you.

Robert Wohnoutka is an independent software developer with over 20 years of software
development experience. He currently has 11 iPhone apps in the Apple app store.

Robert is a former Apple employee where he learned the importance of ease-of-use which
is the first rule he applies in all the apps that he develops. He also has over 20 years of
Product Marketing experience with high-tech products where the ease-of-use aspect was
his guiding light as he helped companies develop and introduce new technologies into the
hands of consumers.
My Walks is a good example of an app Robert developed where he applied the ease-of-use
principal to a GPS-based walking application. This app only requires the user to tap a Start
button to start the walk and the app will automatically detect the end of the user's walk
should the user forget to tap the End button. My Walks was featured in the Best Mobile Apps
2013 book by Jeremy J. Warner and published by Portrait Health Publishing Inc. Robert has
also developed a version for bicycling named My Bike Rides and a version for skiing named
My Ski Runs.
Robert has developed a number of very easy to use money management apps including
EZ Adder, EZ Adder II, EZ Balances, EZ Balances II, and EZ2Compare2. He also develops
customized apps including an iPhone app for his dentist's clients called Nikki Green DDS.


Support files, eBooks, discount offers and more
You might want to visit www.PacktPub.com for support files and downloads related to
your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub
files available? You can upgrade to the eBook version at www.PacktPub.com and as a print
book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
service@packtpub.com for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up
for a range of free newsletters and receive exclusive discounts and offers on Packt books
and eBooks.


Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book
library. Here, you can access, read and search across Packt's entire library of books. 

Why Subscribe?

Fully searchable across every book published by Packt


Copy and paste, print and bookmark content


On demand and accessible via web browser

Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access
PacktLib today and view nine entirely free books. Simply use your login credentials for
immediate access.


This book is dedicated to:
To my favorite uncle Benjamin Jacob Daniel, for always making me smile and for
inspiring me to work hard and achieve my dreams, I miss you a lot.
Chan Ban Guan, for the continued patience, encouragement and support,
and most of all for believing in me during the writing phase of this book.
To my family for always believing in me and for their continued love and support.
To my niece Ava Madison Daniel thank you for continually bringing joy to our family.
To the late Steve Jobs, you will always be an inspiration and a guide towards
perfection. Thank you for all the amazing things you've brought to our lives.
May you rest in peace.
This book would not have been possible without your love and understanding.
I would like to thank you from the bottom of my heart.



Table of Contents
Chapter 1: Getting and Installing the iOS SDK Development Tools
Downloading and installing the iOS SDK
Using Xcode to create an iOS project
Using Interface Builder to create the user interface
Building the user interface for our application
Creating outlets to Interface Builder objects
Creating actions that respond to user actions
Compiling your project
Using the iOS Simulator to test your applications
Configuring and using compiler directives
Debugging your iOS applications using Xcode
Using the Clang Static Analyzer to examine your code

Chapter 2: User Interfaces – Creating the UI


Adding and customizing views
Using labels to display text
Obtaining user input through the use of buttons
Displaying an image within the view
Displaying and editing text
Using the iOS device keyboard
Displaying the progress to the user
Adding a toolbar to a view
Fading a view in and out
Creating a custom table view controller
Adding a table view to a view controller
Handling different iOS devices


Table of Contents

Chapter 3: Using Storyboards


Configuring storyboards for a project
Creating a Twitter application
Creating storyboard scenes
Configuring storyboard scenes
Applying transitions to storyboards
Composing a tweet
Adding photos to a tweet
Preparing transition to another view controller
Presenting storyboard view controllers programmatically

Chapter 4: Using Xcode Instruments


Chapter 5: Working with the Location Services and the
MapKit Frameworks


Chapter 6: Storing Documents within the Cloud


Introducing Xcode Instruments
Tracing iOS applications
Running and profiling an iOS project
Detecting virtual memory faults
Detecting memory leaks
Handling runtime errors
Handling compile-time errors
Adding and configuring Instruments

Adding the CoreLocation and MapKit frameworks
Building a simple CoreLocation application
Determining the current GPS location
Adding and working with the MapView control
Adding overlay regions to maps
Adding annotation placeholders to the map
Reversing geocode address information
Working with the different map types
Storing and using documents within iCloud
Working with the iCloud storage APIs
Detecting file version conflicts within iCloud
Building the iCloud application



Table of Contents

Requesting entitlements for iCloud storage
Configuring iOS devices to use iCloud


Chapter 7: Working with Different Multimedia Resources


Chapter 8: Working with the CoreData and GameKit Frameworks


Chapter 9: Creating a Social Networking App with the
Facebook iOS SDK


Selecting images and video from the camera roll
Capturing media with the camera
Playing video with Apple TV integration
Playing music using the MediaPlayer framework
Using the iOS device's microphone to record
Animating views
Drawing customized text
Drawing lines and curves
Drawing and filling shapes
Applying color effects using Core Image
Applying transition effects
Adding the GameKit and MessageUI frameworks
Building the Core Data data model
Creating the Core Data model files
Adding and configuring the Storyboard
Creating the Books Library user interface
Displaying data within the Table View
Inserting data within our Core Data data model
Delete an item from the Table View using Core Data
Reordering rows within a Table View
Filtering and searching for data within a Table View
Working with the different keyboard styles
Transferring data to another device using bluetooth
Implementing e-mail messaging

Downloading the Facebook iOS SDK
Registering your iOS applications with Facebook
Building a simple social networking application
Adding the Facebook SDK and dependencies to your project
Implementing the Single Sign On (SSO) feature



Table of Contents

Implementing the View Controller class
Requesting additional Facebook permissions
Using the Graph API to read JSON data
Integrating with the Facebook social channels
Handling Facebook errors within your application


Chapter 10: Packaging and Deploying Your Application


Appendix: Exploring the MultiTouch Interface


Setting up your iOS development team
Creating the iOS development certificate
Obtaining the development certificate from Apple
Registering your iOS devices for testing
Creating your application App IDs
Creating the development provisioning profiles
Using the provisioning profile to install the app on an iOS device
Preparing an application for submission to the App Store using
iTunes Connect
Archiving and submitting apps using Xcode 4
Sensing the movement and device orientation
Using the shake gesture with the touch interface
Detecting device touches with the touch interface
Sensing movement with the accelerometer input
Working with the iOS device gyroscope




The Xcode 4 Cookbook provides you with the skills and knowledge, and practical recipes
on how to go about developing useful applications that can be used within the industry.
By using this cookbook's step-by-step style approach, presenting examples in the style
of recipes, allowing you to go directly to your topic of interest, or follow topics throughout
a chapter to gain in-depth knowledge, you will gain the skills needed to develop some
stunning applications.
This cookbook is a practical guide featuring over 100 recipes that show you how to build
your own fun and exciting iOS applications by integrating iCloud, Facebook, Mobile core
services, Core Image and Media Player Frameworks, and the Core Graphics and Core
Motion frameworks, that will enable you to enhance your applications to create some
amazing image and transition effects using the built-in image filters.
In this book, I have tried my best to keep the code simple and easy to understand. I have
provided step-by-step instructions with loads of screenshots at each step to make it easier
to follow. You will soon be mastering the different aspects of iOS 6 programming, as well
as mastering the technology and skills needed to create some stunning applications.
Feel free to contact me at geniesoftstudios@gmail.com for any queries, or if you just
want to drop by and say "Hello". Any suggestions for improving this book will be highly regarded.



What this book covers
Chapter 1, Getting and Installing the iOS SDK Development Tools, introduces the developer
to the Xcode developer set of tools, as well as the capabilities of the iOS Simulator and each
of the layers contained within the iOS architecture, before finally looking at how to create a
simple Hello World iOS application.
Chapter 2, User Interfaces – Creating the UI, introduces the concept of views and how they
are part of a complete iOS application. Exploring a large number of various view components,
you will create different applications that will help you understand how each component
works. We will also learn about the Model View Controller (MVC) pattern and how to use it
to create applications suitable for enhanced user experience. Through this chapter, you will
also learn about the most useful controllers, which will be part of many of your projects in
the future.
Chapter 3, Using Storyboards, gains an understanding of what Storyboards are and how we
can apply the various transitions between views. We will take a look into how we are able to
create and configure scenes and storyboard files, to present these programmatically. Finally,
we will learn how to integrate Twitter capabilities into our application to tweet photos and
standard messages using the new iOS 6 Social frameworks.
Chapter 4, Using Xcode Instruments, focuses on how to effectively use Instruments within
our applications to track down memory leaks and eliminate bottlenecks that could potentially
cause our application to crash on the user's iOS device. We will also take a look at how to
add and configure instruments, as well as learn how to use the System Trace Instrument to
monitor system calls and track down performance issues within the application.
Chapter 5, Working with the Location Services and the MapKit Frameworks, introduces
a detailed guide for using the built-in location services to create applications that provide
location information to the user. You will not only learn how to use the GPS hardware,
but also how to display maps and layout information using Overlays.
Chapter 6, Storing Documents within the Cloud, introduces you to the benefits of using
iCloud, and how to incorporate iCloud functionality into your applications to store and retrieve
files, and its data through the use of the Storage APIs. This chapter will also give you some
insight into how to go about handling file version conflicts when multiple copies of the same
file are being updated on more than one iOS device.
Chapter 7, Working with the Different Multimedia Resources, focuses on teaching you to
create applications that capture, reproduce, and manage multimedia content through the
device's hardware. You will not only learn to use the camera to capture images and videos
but also how to play back and record audio. We will also learn how to implement the different
image filter effects and transition animations to produce a water ripple effect, as well as
learning how to incorporate Airplay functionality into our application.



Chapter 8, Working with the CoreData and GameKit Frameworks, focuses on showing you
how to use the Core Data framework to create a simple Books Library application, to directly
interface with a SQLite database, to create and store book details. We will also look at how to
incorporate Bluetooth functionality, so that you can send book details to another iOS device,
and have this information received wirelessly and stored within the database at the other end.
Chapter 9, Creating a Social Networking App with the Facebook iOS SDK, shows you how to
download the Facebook SDK and register your application with Facebook. It also shows you
how to use the Facebook APIs to integrate Facebook functionality into your app, using the
Single Sign On (SSO) feature. This provides users the ability to sign into your application using
their Facebook identity, so that they can submit notification requests, or submit content to
their wall. We will learn how to use the Open Graph API and Facebook Query Language (FQL)
to pass SQL Query like syntax to retrieve information about the current user, and learn how
to cleanly handle Facebook errors within our iOS applications.
Chapter 10, Packaging and Deploying Your Application, walks you through the required
steps to deploy your finished application to devices, as well as showing you how to prepare
and distribute it to the App Store. We will also take a look at how to create and obtain
provisioning profiles for both development and distribution.
Appendix, Exploring the MultiTouch Interface, discusses how to create applications that
are fully aware of their surrounding environment, through the device's sensors. You will
learn to adjust the user interface according to device orientations and how to respond to
accelerometer and gyroscope events. You will also learn about the built-in shake gesture,
and how to go about responding to the shake motions.

What you need for this book
The minimum requirement for this book is an Intel-based Macintosh computer running Mac
OS X Snow Leopard (10.6.*) or Lion (10.7.*). I would highly recommend upgrading to Lion
or Mountain Lion, as there are many new features in Xcode that are available only to these
two operating systems.
We will be using Xcode 4.6.2, which is the integrated development environment used for
creating applications for iOS development. Almost all projects you will create with the help
of this book will work on the iOS Simulator. However, some projects will require a device
to work correctly. You can download the latest version of Xcode at the following link:




Who this book is for
If you ever wanted to build applications that interact with Facebook, iCloud, Core Location,
and the Core Motion frameworks into your own applications then this book is for you. You
should have a good knowledge and programming experience with Objective-C and have
used Xcode 4 and iOS 5.

In this book, you will find a number of styles of text that distinguish between different kinds of
information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: "Whenever compiler directives are used in
Objective-C, they are responsible for responding to and executing the associated snippets
of code encapsulated within the #ifdef and #endif tags".
A block of code is set as follows:
- (IBAction)btnTapHere:(id)sender {
NSString *greeting = [NSString stringWithFormat:@"Welcome
To Xcode 4 Cookbook series %@ %@",txtFirstname.text,
lblOutput.text = greeting;
lblOutput.font = [UIFont boldSystemFontOfSize:21];
lblOutput.textColor = [UIColor blueColor];

When we wish to draw your attention to a particular part of a code block, the relevant lines
or items are set in bold:

Created by Steven F Daniel on 21/09/12.
Copyright (c) 2012 GenieSoft Studios. All rights reserved.

@interface SecondViewController : UIViewController



New terms and important words are shown in bold. Words that you see on the screen, in
menus or dialog boxes for example, appear in the text like this: " To continue execution of your
application, click on the Continue program execution button".
Warnings or important notes appear in a box like this.

Tips and tricks appear like this.

Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this
book—what you liked or may have disliked. Reader feedback is important for us to develop
titles that you really get the most out of.
To send us general feedback, simply send an e-mail to feedback@packtpub.com, and
mention the book title via the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or
contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you
to get the most from your purchase.

Downloading the example code
You can download the example code files for all Packt books you have purchased from your
account at http://www.packtpub.com. If you purchased this book elsewhere, you can
visit http://www.packtpub.com/support and register to have the files e-mailed directly
to you.




Although we have taken every care to ensure the accuracy of our content, mistakes do happen.
If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be
grateful if you would report this to us. By doing so, you can save other readers from frustration
and help us improve subsequent versions of this book. If you find any errata, please report them
by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on
the erratasubmissionform link, and entering the details of your errata. Once your errata are
verified, your submission will be accepted and the errata will be uploaded on our website, or
added to any list of existing errata, under the Errata section of that title. Any existing errata can
be viewed by selecting your title from http://www.packtpub.com/support.

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt,
we take the protection of our copyright and licenses very seriously. If you come across any
illegal copies of our works, in any form, on the Internet, please provide us with the location
address or website name immediately so that we can pursue a remedy.
Please contact us at copyright@packtpub.comwith a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.

You can contact us at questions@packtpub.com if you are having a problem with any
aspect of the book, and we will do our best to address it.




Getting and Installing
the iOS SDK
Development Tools
In this chapter, we will cover:

Downloading and installing the iOS SDK


Using Xcode to create an iOS project


Using Interface Builder to create the user interface


Building the user interface for our application


Creating outlets to Interface Builder objects


Creating actions that respond to user actions


Compiling your project


Using the iOS Simulator to test your applications


Configuring and using compiler directives


Debugging your iOS applications using Xcode


Using the Clang Static Analyzer to examine your code


Getting and Installing the iOS SDK Development Tools

Welcome to the exciting world of iOS programming using iOS 6. This latest release of the
mobile operating system is packed with some great new features and improvements, and
comes with over 200 new features as well as an updated SDK featuring over 1,500 new
development APIs that can be incorporated into your applications.
In this chapter, we will look at what integrated development environments (IDEs) and
software development kits (SDKs) are needed to develop applications for the iOS platform,
Apple's operating system for mobile devices. We will explain the importance of each tool's
role in the development cycle, before finally developing our first application. The tools that are
required to develop applications for the iOS platform are explained, as follows:

An Intel-based Mac computer running the Snow Leopard (10.6.*), Lion (10.7.*),
or OS X Mountain Lion (10.8.*) operating system: The essential development tools
cannot be installed on any other computer platforms, so if you are running another
processor type (such as the older Mac G4 or Mac G5), you're out of luck.


iOS 5 SDK (or higher): In order to download the Apple iOS SDK, you must be
registered as an Apple developer. The iOS SDK consists of the following components:




This is the main IDE that enables you to develop, edit, and debug
native applications for the iOS and Mac platforms using the
Objective-C programming language.

iOS Simulator

This is a Cocoa-based application that enables you to debug your
iOS applications on the computer, without the need of having an
iOS device. There are many iOS features that simply won't work
within the Simulator, so a device is required if an application uses
those features, that is, the Core Location and MapKit frameworks.


These are the analysis tools that help you optimize your
applications and monitor for memory leaks during execution of your
application at real time.


This enables you to develop web-based iOS applications and
dashboard widgets.



Chapter 1

Downloading and installing the iOS SDK
This recipe includes information on how to sign up to the Apple Developer Program, as well as
how to download and install the necessary tools needed to develop applications using Xcode.

Getting ready
Before you can start building iOS applications, you must first join up as a registered user
of the iOS Developer Program in order to download all of the necessary components to our
computer. At the time of writing, the latest version is 4.5.2, and iOS SDK's latest version is 6.x.
The registration process is free, and provides you access to the iOS SDK and other developer
resources that are really useful for getting you started.
The following short list outlines some of the things that you will be able to access when you
become a member of the iOS Developer Program:

Helpful getting started guides to help you get up and running quickly


Helpful tips that show you how to submit your apps to the App Store


Ability to download current releases of the iOS software


Ability to beta test releases of iOS and the iOS SDK


Access to the Apple Developer Forums
Whether you are developing applications for the iPhone or
iPad, these use the same operating system (OS) and iOS SDK
to allow you to create universal applications that will work with
both the iPhone and iPad running on iOS 4.3.* and above.



Getting and Installing the iOS SDK Development Tools

How to do it...
To prepare your computer for iOS development, you will need to download and install the
necessary components in the following order:
1. To sign up to the iOS Developer Program, you will need to go to

and then click on the Log in button to proceed, as shown in the following screenshot:

2. Once you have signed up, you will then be able to download the iOS SDK and proceed
with installing it onto your computer.
3. Xcode can also be obtained from the Mac App Store at the following link

http://itunes.apple.com/us/app/xcode/id497799835?mt=12, depending

on whether you have chosen the version for Mac OSX Lion. The installation procedure
in the remaining steps shows how to go about installing the iOS development tools for
Snow Leopard.


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay