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