1.Working with Objects 1
1.1 Implementing and Using Custom Objects 2
1.2 Allocating and Initializing Objects 6
1.3 Defining Two or More Methods with the Same Name in an Object 8
1.4 Defining and Accessing Properties 11
1.5 Managing Properties Manually 13
1.6 Reusing a Block of Code 16
1.7 Communicating with Objects 19
1.8 Invoking the Selectors of an Object Dynamically 25
1.9 Managing Memory with the iOS SDK 27
1.10 Managing Untyped Objects 29
2.Implementing Controllers and Views 31
2.1 Getting and Using the Application Delegate 31
2.2 Managing the Views in Your Application 33
2.3 Creating Your Application's GUI 35
2.4 Making Your View Controller Available at Runtime 37
2.5 Using a View in Your Application's GUI 39
2.6 Managing Master-Detail Views 41
2.7 Managing Multiple Views 48
2.8 Incorporating and Using Models in the GUI 50
2.9 Implementing Navigation Bars 54
2.10 Switching from One View to Another 61
2.11 Setting the Title on a Navigation Bar 62
2.12 Displaying an Image for the Title of the Navigation Bar 63
2.13 Creating and Managing Buttons on a Navigation Bar 64
2.14 Removing a View from a Navigation Controller 69
2.15 Manipulating a Navigation Controller's Array of View Controllers 70
2.16 Incorporating a Tab Bar into Your Application 71
2.17 Pop Up Additional Information over iPad UI Elements 74
3.Constructing and Using TableViews 87
3.1 Creating a Table View Using Interface Builder 87
3.2 Creating a Table View Using Code 89
3.3 Assigning an Event Handler to a Table View Using Interface Builder 90
3.4 Assigning an Event Handler to a Table View Using Xcode 92
3.5 Populating a Table View with Data 94
3.6 Receiving and Handling Table View Events 99
3.7 Using Different Types of Accessories in a Table View 100
3.8 Creating Custom Table View Accessories 103
3.9 Customizing the Appearance of a Table View's Contents 105
3.10 Displaying Hierarchical Data 110
3.11 Effectively Managing Memory with Table Views 112
3.12 Editing and Moving Data in a Table View 115
3.13 Enabling Swipe Deletion 124
3.14 Grouping Data 127
4.Core Location and Maps 141
4.1 Creating a Map Using Interface Builder 142
4.2 Creating a Map Using Code 143
4.3 Handling the Events of a Map 146
4.4 Pinpointing a Device's Location 147
4.5 Displaying Built-in Pins on a Map View 151
4.6 Displaying Pins with Different Colors on a Map View 154
4.7 Creating and Displaying Custom Pins on a Map View 160
4.8 Retrieving Meaningful Addresses Using Spatial Coordinates 163
4.9 Retrieving Spatial Coordinates Using Meaningful Addresses 165
5.Implementing Gesture Recognizers 173
5.1 Detecting Swipe Gestures 175
5.2 Reacting to Rotation Gestures 177
5.3 Detecting Panning and Dragging Gestures 185
5.4 Detecting Long Press Gestures 188
5.5 Responding to Tap Gestures 191
5.6 Responding to Pinch Gestures 194
6.Networking and XML 197
6.1 Opening and Reading a Local XML File 197
6.2 Parsing an XML File into Objects 204
6.3 Downloading Files Svnchronously 213
6.4 Downloading Files Asynchronously 215
6.5 Reading and Parsing Remote XML Files 218
6.6 Caching Files in Memory 228
6.7 Caching Files on Disk 233
7.Operations,Threads,and Timers 251
7.1 Running Tasks Svnchronously 253
7.2 Running Tasks Asynchronously 261
7.3 Creating a Dependency Between Tasks 269
7.4 Pefforming a Task After a Delay 272
7.5 Performing Periodic Tasks 273
7.6 Performing Periodic Tasks Efficiently 278
7.7 Initializing Threads Implicitly 284
7.8 Exiting Threads and Timers 285
7.9 Avoiding Memory Leaks in Threads 288
8.Audio and Video 293
8.1 Playing Audio Files 293
8.2 Handling Interruptions While Playing Audio Files 297
8.3 Recording Audio Files 298
8.4 Handling Interruptions While Recording Audio Files 305
8.5 Playing Audio over Other Sounds That Are Playing 307
8.6 Playing Video Files 311
8.7 Capturing Thumbnails from a Video File Asvnchronously 315
8.8 Accessing the iPod Library in Response to a User Request 319
9.Address Book 327
9.1 Accessing the Address Book 328
9.2 Retrieving All the People in the Address Book 331
9.3 Retrieving Properties of Address Book Entries 332
9.4 Inserting a Person Entry in the User's Address Book 336
9.5 Inserting a Group Entry in the User's Address Book 339
9.6 Adding Persons to Groups 341
9.7 Searching in the Address Book 344
9.8 Retrieving and Setting a Person's Address Book Image 350
10.Camera and the Photo Library 357
10.1 Detecting and Probing the Camera 359
10.2 Taking Photos with the Camera 364
10.3 Taking Videos with the Camera 368
10.4 Storing Photos in the Photo Library 372
10.5 Storing Videos in the Photo Library 375
10.6 Retrieving Photos and Videos from the Photo Library 378
10.7 Retrieving Assets from the Assets Library 380
10.8 Editing Videos on an iOS Device 388
11.Multitasking 399
11.1 Detecting the Availability of Multitasking 401
11.2 Completing a Long-Running Task in the Background 402
11.3 Receiving Local Notifications in the Background 407
11.4 Playing Audio in the Background 415
11.5 Handling Location Changes in the Background 419
11.6 Saving and Loading the State of a Multitasking iOS Application 424
11.7 Handling Network Connections in the Background 430
11.8 Handling Notifications Delivered to a Waking Application 435
11.9 Handling Locale Changes in the Background 438
11.10 Responding to Changes in an Application's Settings 440
11.11 Opting Out of Background Execution 442
12.Core Data 445
12.1 Creating a Core Data Model with Xcode 447
12.2 Creating and Using Core Data Model Classes 451
12.3 Creating and Saving Data Using Core Data 453
12.4 Loading Data Using Core Data 456
12.5 Deleting Data Using Core Data 458
12.6 Sorting Data Using Core Data 477
12.7 Boosting Data Access in Table Views 480
12.8 Implementing Relationships with Core Data 492
13.Event Kit 499
13.1 Retrieving the List of Calendars 502
13.2 Adding Events to Calendars 504
13.3 Accessing the Contents of Calendars 507
13.4 Removing Events from Calendars 512
13.5 Adding Recurring Events to Calendars 523
13.6 Retrieving the Attendees of an Event 528
13.7 Adding Alarms to Calendars 534
13.8 Handling Event Changed Notifications 537
13.9 Presenting Event View Controllers 540
13.10 Presenting Event Edit View Controllers 546
14.Graphics 551
14.1 Drawing Basic Shapes on a Graphics Context 552
14.2 Drawing Paths on a Graphics Context 555
14.3 Drawing Images on a Graphics Context 561
14.4 Capturing the Screen Contents into an Image 563
14.5 Drawing Text with Core Graphics 568
15.Core Motion 573
15.1 Detecting the Availability of an Accelerometer 574
15.2 Detecting the Availability of a Gyroscope 577
15.3 Retrieving Accelerometer Data 578
15.4 Detecting a Shake on an iOS Device 584
15.5 Retrieving Gyroscope Data 590
Index 595