Preface
1. Why Go Native?
The Pros and Cons
Why Write Native Applications?
The Release Cycle
Build It and They Will Come
2. Becoming a Developer
Registering As an iPhone Developer
Enrolling in the iPhone Developer Program
The Apple Developer Connection
Installing the iPhone SDK
Preparing Your iPhone or iPod touch
Creating a Development Certificate
Getting the UDID of Your Development Device
Creating an App ID
Creating a Mobile Provisioning Profile
Making Your Device Available for Development
3. Your First iPhone App'.
Objective-C Basics
Object-Oriented Programming
The Objective-C Object Model
The Basics of Objective-C Syntax
Creating a Project
Exploring the Project in Xcode
Our Project in Interface Builder
Adding Code
Connecting the Outlets in Interface Builder
Putting the Application on Your iPhone
4. Coding in Objective-C
Declaring and Defining Classes
Declaring a Class with the Interface
Defining a Class with the Implementation
Object Typing
Properties
Synthesizing Properties
The Dot Syntax
Declaring Methods
Calling Methods
Calling Methods on nil
Memory Management
Creating Objects
The Autorelease Pool
The alloc, retain, copy, and release Cycle
The dealloc Method
Responding to Memory Warnings
Fundamental iPhone Design Patterns
The Model-View-Controller Pattern
Views and View Controllers
The Delegates and DataSource Pattern
Conclusion
5. Table-View-Based Applications
Simplifying the Template Classes
Creating a Table View
Organizing and Navigating Your Source Code
Connecting the Outlets
Building a Model
Adding Images to Your Projects
Connecting the Controller to the Model
Mocking Up Functionality with Alert Windows
Adding Navigation Controls to the Application
Adding a City View
Edit Mode
Deleting a City Entry
Adding a City Entry
The \Add New City...\ Interface
Capturing the City Data
6. Other View Controllers
Utility Applications
Making the Battery Monitoring Application
Tab Bar Applications
Refactoring the Template
Adding Another Tab Bar Item
Finishing Up
Modal View Controllers
Modifying the City Guide Application
The Image Picker View Controller
Adding the Image Picker to the City Guide Application
7. Connecting to the Network
Detecting Network Status
Apple's Reachability Class
Embedding a Web Browser in Your App
A Simple Web View Controller
Displaying Static HTML Files
Getting Data Out of a UlWebView
Sending Email
Getting Data from the Internet
Synchronous Requests
Asynchronous Requests
Using Web Services
8. Handling Data
Data Entry
UITextField and Its Delegate
UITextView and Its Delegate
Parsing XML
Parsing XML with libxml2
Parsing XML with NSXMLParser
Parsing JSON
The Twitter Search Service
The Twitter Trends Application
Regular Expressions
Introduction to Regular Expressions
Storing Data
Using Flat Files
Storing Information in an SQL Database
Core Data
9. Distributing Your Application
Adding Missing Features
Adding an Icon
Adding a Launch Image
Changing the Display Name
Enabling Rotation
Building and Signing
Ad Hoc Distribution
Developer-to-Developer Distribution
App Store Distribution
Submitting to the App Store
The App Store Resource Center
Reasons for Rejection
10. Using Sensors
Hardware Support
Determining Available Hardware Support
Setting Required Hardware Capabilities
Using the Camera
The Core Location Framework
Location-Dependent Weather
Using the Accelerometer
Writing an Accelerometer Application
Using the Digital Compass
Accessing the Proximity Sensor
Using Vibration
11. Geolocation and Mapping
User Location
Annotating Maps
12. Integrating Y0urApplicati0n
Application Preferences
Accessing Global Preferences
Custom URL Schemes
Using Custom Schemes
Registering Custom Schemes
Media Playback
Using the Address Book
Interactive People Picking
Programmatic People Picking
13. Other Native Platforms
PhoneGap
Download and Installation
Building a PhoneGap Project
MonoTouch
Download and Installation
Building a MonoTouch Project
14. Going Further
Cocoa and Objective-C
The iPhone SDK
Web Applications
Core Data
Push Notifications
In-App Purchase
Core Animation
Game Kit
Writing Games
Look and Feel
Hardware Accessories
index