Introduction
- Prerequisites
- Typographical Conventions
- Hardware and Software
- How to Use This Book
- Learning is not Fun
Chapter 1: Simple iPhone Application
- Creating an Xcode Project
- Using Interface Builder
- Model-View-Controller
- Declarations
- Declaring instance variables
- Declaring methods
- Making Connections
- Setting pointers
- Setting targets and actions
- Summary
- Implementing Methods
- Event-driven Programming
- Deploying an Application
- Application Icons
- Default Images
Chapter 2: Objective-C
- Objects
- Instances
- Creating an instance
- Sending messages
- Destroying an instance
- Writing the RandomPossessions Tool
- NSArray and NSMutableArray
- Subclassing an Objective-C Class
- Instance variables
- Accessors and properties
- Instance methods
- Initializers
- self
- super
- Initializer chain
- Class methods
- Exceptions and the Console Window
- Objective-C 20 Additions
Chapter 3: Memory Management
- Memory Management Concepts
- Managing memory in C
- Objects and memory management
- Reference Counting
- Using retain counts
- Avoiding memory leaks with autorelease
- Managing memory in accessors and properties
- Retain count rules
- Managing Memory in RandomPossessions
Chapter 4: Delegation and Core Location
- Delegation
- Beginning the Whereami Application
- Using frameworks
- Core Location Service
- Receiving Updates from CLLocationManager
- For the More Curious: Compiler and Linker Errors
- For the More Curious: Protocols
- Challenge: Heading
Chapter 5: MapKit and UITextField
- Object Diagrams
- MapKit Framework
- Interface Properties
- Being a MapView Delegate
- Your Own MKAnnotation
- Tagging Locations
- Renaming an Application
- Challenge: Annotation Extras
- Challenge: Reverse Geocoding
Chapter 6: Subclassing UIView
- Creating a Custom View
- The drawRect: Method
- Instantiating a UIView
- Drawing Text and Shadows
- Using UIScrollView
- Zooming
- Hiding the Status Bar
- For the More Curious: Retain Cycles
- For the More Curious: Redrawing Views
- Challenge: Colors
Chapter 7: View Controllers
- Using View Controllers
- Creating the UITabBarController
- Creating View Controllers and Tab Bar Items
- Creating Views for the View Controllers
- viewWillAppear:
- The Lifecycle of a View Controller
- For the More Curious: Paging
- Challenge: Map Tab
Chapter 8: The Accelerometer
- Setting Up the Accelerometer
- Getting Accelerometer Data
- Orientation and Scale of Acceleration
- Using Accelerometer Data
- Smoothing Accelerometer Data
- Detecting Shakes
- Challenge: Changing Colors
Chapter 9: Notification and Rotation
- Notification Center
- UIDevice Notifications
- Autorotation
- Forcing Landscape Mode
- For the More Curious: Overriding Autorotation
- Challenge: Proximity Notifications
Chapter 10: UITableView and UITableViewController
- Beginning the Homepwner Application
- UITableViewController
- Subclassing UITableViewController
- UITableView's Data Source
- UITableViewDataSource protocol
- UITableViewCells
- Reusing UITableViewCells
- Next Steps for Homepwner
- Challenge: Sections
Chapter 11: Editing UITableViews
- Editing a UITableView
- Begin and End Editing
- Deleting Rows
- Moving Rows
- Inserting Rows
Chapter 12: UINavigationController
- UINavigationController
- UINavigationBar
- An Additional UIViewController
- The XIB File and File's Owner
- Setting Up ItemDetailViewController
- Navigating with UINavigationController
- Appearing and Disappearing Views
- Challenge: Number Pad
Chapter 13: Camera
- ImageCache: a Singleton
- NSDictionary
- Singletons
- UIImageView
- Giving Possessions an Image
- UUIDs
- Dismissing the Keyboard
- Challenge: Removing an Image
Chapter 14: Saving and Loading
- Application Sandbox
- Archiving
- Writing Other Data to Disk
- More on Reading and Writing to Disk
- Challenge: Archiving Wherewasi
Chapter 15: Low Memory Warning
- Low Memory Warning
- Handling Low Memory Warnings
- Be Careful
- Simulating Low Memory Warnings
Chapter 16: UITableViewCell
- Subclassing UITableViewCell
- Image Manipulation
- Archiving the Thumbnail Data
- Challenge: Accessory Views
- Challenge: Making it Pretty
Chapter 17: Multi-Touch
- Create a Drawing Program
- Touch Events
- The Responder Chain
- Instruments
- The ObjectAlloc Instrument
- The Sampler Instrument
- For the More Curious: UIControl
- For the More Curious: Touch Dependancy
- Challenge: Saving and Loading
- Challenge: Circles
Chapter 18: CALayer
- Creating a CALayer
- Layer Content
- Implicitly Animatable Properties
- For the More Curious: Programmatically Generating Content
- For the More Curious: Layers and Views
- Challenge: Dynamic Layer Content
Chapter 19: CAAnimation
- Spinning the Time with CABasicAnimation
- Timing Functions
- CAKeyframeAnimation
- For the More Curious: Presentation and Model Layers
- Challenge: More Animation
Chapter 20: Media
- The MediaPlayer Application
- Playing System Sounds
- Playing Audio Files
- Playing Movie Files
- Low-level APIs
- Challenge: Audio Recording
Chapter 21: Web Services
- The RandomNumbers Application
- Fetching data from a URL
- Parsing XML
- For the more curious: The Request Body
- For the more curious: Credentials
- Challenge: Cancel Fetch
Chapter 22: Address Book
- The People Picker
- Additions to Possession Class
- Address Book Functions
- For the More Curious: That Other Delegate Method
Chapter 23: Localization
- Internationalizing Homepwner
- NSLocale
- Localized Resources
- Strings Tables
- For the More Curious: NSBundle
Chapter 24: Bonjour
- Publishing a Service
- Browsing for Services
- TXT Record
- For the More Curious: Socket Connections
Chapter 25: Settings
- Settings Bundle
- NSUserDefaults
- Registering Defaults
- Using the defaults
Chapter 26: SQLite
- What Am I doing?
- The Interface
- Making the database
- Fetching
- Making and Using the Tree
- Challenge: Fetching more Data
Chapter 27: Core Data
- Inventory
- Edit the Model File
- AppController
- LabelSettingViewController
- LocationListViewController
- AssetListViewController
- CountViewController
- How it Works
- Trade-offs of Persistence Mechanisms
- Challenge: Deleting
Chapter 28: OpenGL ES
- Setting up an OpenGL ES Project
- Creating an OpenGL ES Capable View
- Creating the EAGLContext
- Frame and Render Buffers
- Creating the Timer
- The Rendering Method
- The Rendering Controller
- Rendering Shapes in OpenGL ES
- Start and Stop Animation