iOS Components and Frameworks: Understanding the Advanced Features of the iOS SDK


Take the next leap forward as an iOS app developer: leverage iOS 6's powerful new components and frameworks, and build apps with outstanding performance, reliability, interactivity, media support, and customization! iOS Components and Frameworks handles intermediate-to-advanced iOS programming topics brilliantly, fully illuminating the sophisticated intermediate-to-advanced-level techniques you're now ready for. Pioneering iOS programmers Kyle Richter and Joe Keeley offer thorough and example-rich coverage of ...
See more details below
Paperback (New Edition)
$41.87 price
(Save 6%)$44.99 List Price

Pick Up In Store

Reserve and pick up in 60 minutes at your local store

Other sellers (Paperback)
  • All (10) from $24.06   
  • New (6) from $25.87   
  • Used (4) from $24.06   
iOS Components and Frameworks: Understanding the Advanced Features of the iOS SDK

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
$31.49 price
(Save 12%)$35.99 List Price


Take the next leap forward as an iOS app developer: leverage iOS 6's powerful new components and frameworks, and build apps with outstanding performance, reliability, interactivity, media support, and customization! iOS Components and Frameworks handles intermediate-to-advanced iOS programming topics brilliantly, fully illuminating the sophisticated intermediate-to-advanced-level techniques you're now ready for. Pioneering iOS programmers Kyle Richter and Joe Keeley offer thorough and example-rich coverage of topics ranging from social support to security, Core Data to advanced networking, iCloud support to StoreKit and Mapkit. You'll find a full section on advanced performance and security techniques, including the effective use of Grand Central Dispatch and Keychain. Richter and Keeley also thoroughly address Core Gallery Views, Core Text, Gesture Recognizers, Photo Libraries, and more. Each chapter contains a complete sample project that walks you through integrating its technology into a generic iOS app. You'll discover how multiple iOS 6 features can be combined into exceptionally powerful apps, and walk through a complete case study project: a fully functional game with complete Game Center integration. Throughout, you'll find robust code examples designed for easy reuse, making this your most valuable iOS go-to reference for years to come.
Read More Show Less

Product Details

  • ISBN-13: 9780321856715
  • Publisher: Addison-Wesley
  • Publication date: 11/18/2013
  • Series: Developer's Library Series
  • Edition description: New Edition
  • Edition number: 1
  • Pages: 576
  • Sales rank: 1,455,463
  • Product dimensions: 7.00 (w) x 8.90 (h) x 1.30 (d)

Meet the Author

Kyle Richter is the founder of Dragon Forged Software, an award-winning iOS and Mac Development Company, and co-founder of Empirical Development, a for-hire iOS shop. Kyle began writing code in the early 1990s and has always been dedicated to the Mac platform. He has written several books on iOS development, as well as articles on many popular developer blogs and websites. He manages a team of more than 20 full-time iOS developers and runs day-to-day operations at three development companies. Kyle travels the world speaking on development and entrepreneurship; currently he calls Key West his home, where he spends his time with his border collie Landis.

Joe Keeley is the CTO of Dragon Forged Software, and Project Lead at Empirical Development. Joe works on Resolve and Slender, and has led a number of successful client projects to completion. He has liked writing code since first keying on an Apple II, and has worked on a wide variety of technology and systems projects in his career. Joe has presented several different technical topics at iOS and Mac conferences around the U.S. Joe lives in Denver, Colorado, with his wife and two daughters, and hopes to get back into competitive fencing again in his spare time.

Read More Show Less

Table of Contents

1 UIKit Dynamics 1

Sample App 1

Introduction to UIKit Dynamics 2

Implementing UIKit Dynamics 3

Gravity 3

Collisions 4

Attachments 6

Springs 8

Snap 9

Push Forces 9

Item Properties 11

In-Depth UIDynamicAnimator and UIDynamicAnimatorDelegate 13

Summary 13

Exercises 14

2 Core Location, MapKit, and Geofencing 15

The Sample App 15

Obtaining User Location 15

Requirements and Permissions 16

Checking for Services 19

Starting Location Request 20

Parsing and Understanding Location Data 22

Significant Change Notifications 23

Using GPX Files to Test Specific Locations 24

Displaying Maps 26

Understanding the Coordinate Systems 26

MKMapKit Configuration and Customization 26

Responding to User Interactions 28

Map Annotations and Overlays 29

Adding Annotations 29

Displaying Standard and Custom Annotation Views 32

Draggable Annotation Views 35

Working with Map Overlays 36

Geocoding and Reverse-Geocoding 37

Geocoding an Address 37

Reverse-Geocoding a Location 41

Geofencing 44

Checking for Regional Monitoring Capability 44

Defining Boundaries 45

Monitoring Changes 46

Getting Directions 48

Summary 52

Exercises 53

3 Leaderboards 55

Whack-a-Cac 55

Spawning a Cactus 57

Cactus Interaction 60

Displaying Life and Score 62

Pausing and Resuming 63

Final Thoughts on Whack-a-Cac 64

iTunes Connect 65

Game Center Manager 68

Authenticating 70

Common Authentication Errors 71

iOS 6 Authentication 73

Submitting Scores 75

Adding Scores to Whack-a-Cac 78

Presenting Leaderboards 80

Score Challenges 82

Going Further with Leaderboards 84

Summary 86

Exercises 86

4 Achievements 87

iTunes Connect 87

Displaying Achievement Progress 89

Game Center Manager and Authentication 91

The Achievement Cache 91

Reporting Achievements 93

Adding Achievement Hooks 95

Completion Banners 96

Achievement Challenges 97

Adding Achievements into Whack-a-Cac 100

Earned or Unearned Achievements 101

Partially Earned Achievements 102

Multiple Session Achievements 104

Piggybacked Achievements and Storing Achievement Precision 105

Timer-Based Achievements 106

Resetting Achievements 107

Going Further with Achievements 108

Summary 110

Exercises 110

5 Getting Started with Address Book 111

Why Address Book Support Is Important 111

Limitations of Address Book Programming 112

Introduction to the Sample App 112

Getting Address Book Up and Running 112

Reading Data from the Address Book 115

Reading Multivalues from the Address Book 116

Understanding Address Book Labels 117

Working with Addresses 118

Address Book Graphical User Interface 120

People Picker 120

Programmatically Creating Contacts 125

Summary 128

Exercises 128

6 Working with Music Libraries 129

Introduction to the Sample App 129

Building a Playback Engine 131

Registering for Playback Notifications 131

User Controls 133

Handling State Changes 135

Duration and Timers 139

Shuffle and Repeat 140

Media Picker 141

Programmatic Picker 143

Playing a Random Song 144

Predicate Song Matching 145

Summary 147

Exercises 148

7 Working with and Parsing JSON 149

JSON 149

Benefits of Using JSON 149

JSON Resources 150

Sample App Overview 150

Accessing the Server 150

Getting JSON from the Server 151

Building the Request 151

Inspecting the Response 152

Parsing JSON 153

Displaying the Data 154

Posting a Message 155

Encoding JSON 156

Sending JSON to the Server 158

Summary 159

Exercise 159

8 Getting Started with iCloud 161

The Sample App 161

Setting Up the App for iCloud Support 162

Account Setup 162

Enabling iCloud Capabilities 163

Initializing iCloud 164

Introducing UIDocument 165

Subclassing UIDocument 165

Interacting with UIDocument 167

Interacting with iCloud 168

Listing Documents in iCloud 168

Detecting Conflicts in iCloud 172

Conflict Resolution 173

Key-Value Store Syncing 178

Summary 180

Exercises 180

9 Notifications 181

Differences Between Local and Push Notifications 181

Sample App 182

App Setup 182

Create Development Push SSL Certificate 184

Development Provisioning Profile 188

Custom Sound Preparation 194

Registering for Remote Notifications 194

Scheduling Local Notifications 196

Receiving Notifications 196

Push Notification Server 198

Basic Rails Setup 198

Add Support for Devices and Shouts 199

Device Controller 202

Shout Controller 202

Tying It All Together 204

Sending the Push Notifications 207

Handling APNs Feedback 207

Summary 208

Exercise 208

10 Bluetooth Networking with Game Kit 209

Limitations of Game Kit’s Bluetooth Networking 209

Benefits of Game Kit’s Bluetooth Networking 210

Sample App 210

The Peer Picker 215

Sending Data 218

Data Modes 219

Sending Data in the Sample App 219

Receiving Data 221

Receiving Data in the Sample App 221

State Changes 222

Advanced Features 223

Peer Display Name 223

Connecting Without the Peer Picker 223

Session Modes 225

Summary 225

Exercises 225

11 AirPrint 227

AirPrint Printers 227

Testing for AirPrint 229

Printing Text 229

Print Info 230

Setting Page Range 231

Error Handling 232

Starting the Print Job 232

Print Simulator Feedback 233

Print Center 234

UIPrintInteractionControllerDelegate 234

Printing Rendered HTML 236

Printing PDFs 237

Summary 239

Exercises 239

12 Core Data Primer 241

Deciding on Core Data 242

Core Data Managed Objects 243

Managed Objects 243

Managed Object Model 244

Managed Object Model Migrations 246

Creating Managed Objects 246

Fetching and Sorting Objects 247

Fetched Results Controller 248

The Core Data Environment 248

Persistent Store Coordinator 249

Persistent Store 249

Managed Object Context 249

Summary 250

13 Getting Up and Running with Core Data 251

Sample App 251

Starting a Core Data Project 252

Core Data Environment 254

Building Your Managed Object Model 256

Creating an Entity 257

Adding Attributes 257

Establishing Relationships 258

Custom Managed Object Subclasses 259

Setting Up Default Data 260

Inserting New Managed Objects 260

Other Default Data Setup Techniques 261

Displaying Your Managed Objects 262

Creating Your Fetch Request 262

Fetching by Object ID 264

Displaying Your Object Data 265

Using Predicates 267

Introducing the Fetched Results Controller 268

Preparing the Fetched Results Controller 268

Integrating Table View and Fetched Results Controller 271

Responding to Core Data Changes 273

Adding, Editing, and Removing Managed Objects 275

Inserting a New Managed Object 275

Removing a Managed Object 276

Editing an Existing Managed Object 277

Saving and Rolling Back Your Changes 278

Summary 279

Exercises 279

14 Language Features 281

Literals 282

Boxed Expressions 284

Automatic Reference Counting 285

Using ARC in a New Project 285

Converting an Existing Project to ARC 286

Basic ARC Usage 288

ARC Qualifiers 289

Blocks 290

Declaring and Using Blocks 290

Capturing State with Blocks 291

Using Blocks as Method Parameters 293

Memory, Threads, and Blocks 294

Properties 295

Declaring Properties 295

Synthesizing Properties 297

Accessing Properties 297

Dot Notation 298

Fast Enumeration 298

Method Swizzling 299

Summary 302

Exercises 302

15 Integrating Twitter and Facebook Using Social Framework 303

Social Integration 303

The Sample App 303

Logging In 304

Using SLComposeViewController 306

Posting with a Custom Interface 308

Posting to Twitter 308

Posting to Facebook 312

Creating a Facebook App 312

Accessing User Timelines 318

Twitter 318

Facebook 324

Summary 328

Exercises 328

16 Working with Background Tasks 329

The Sample App 330

Checking for Background Availability 330

Finishing a Task in the Background 331

Background Task Identifier 332

Expiration Handler 333

Completing the Background Task 333

Implementing Background Activities 335

Types of Background Activities 335

Playing Music in the Background 336

Summary 340

Exercises 340

17 Grand Central Dispatch for Performance 341

The Sample App 341

Introduction to Queues 343

Running on the Main Thread 343

Running in the Background 345

Running in an Operation Queue 347

Concurrent Operations 347

Serial Operations 349

Canceling Operations 350

Custom Operations 351

Running in a Dispatch Queue 353

Concurrent Dispatch Queues 353

Serial Dispatch Queues 355

Summary 357

Exercises 358

18 Using Keychain to Secure Data 359

Introduction to the Sample App 360

Setting Up and Using Keychain 360

Setting Up a New KeychainItemWrapper 361

Storing and Retrieving the PIN 362

Keychain Attribute Keys 363

Securing a Dictionary 364

Resetting a Keychain Item 366

Sharing a Keychain Between Apps 367

Keychain Error Codes 368

Summary 368

Exercises 369

19 Working with Images and Filters 371

The Sample App 371

Basic Image Data and Display 371

Instantiating an Image 372

Displaying an Image 373

Using the Image Picker 375

Resizing an Image 378

Core Image Filters 379

Filter Categories and Filters 379

Filter Attributes 382

Initializing an Image 384

Rendering a Filtered Image 385

Chaining Filters 386

Face Detection 387

Setting Up a Face Detector 388

Processing Face Features 388

Summary 390

Exercises 391

20 Collection Views 393

The Sample App 393

Introducing Collection Views 394

Setting Up a Collection View 395

Implementing the Collection View Data Source Methods 396

Implementing the Collection View Delegate Methods 399

Customizing Collection View and Flow Layout 401

Basic Customizations 401

Decoration Views 402

Creating Custom Layouts 406

Collection View Animations 411

Collection View Layout Changes 411

Collection View Layout Animations 412

Collection View Change Animations 414

Summary 415

Exercises 415

21 Introduction to TextKit 417

Sample App 417

Introducing NSLayoutManager 418

NSTextStore 418

Detecting Links Dynamically 421

Detecting Hits 422

Exclusion Paths 423

Content Specific Highlighting 425

Changing Font Settings with Dynamic Type 429

Summary 431

Exercises 431

22 Gesture Recognizers 433

Types of Gesture Recognizers 433

Basic Gesture Recognizer Usage 434

Introduction to the Sample App 434

Tap Recognizer in Action 435

Pinch Recognizer in Action 436

Multiple Recognizers for a View 438

Gesture Recognizers: Under the Hood 440

Multiple Recognizers for a View: Redux 441

Requiring Gesture Recognizer Failures 443

Custom UIGestureRecognizer Subclasses 444

Summary 445

Exercise 445

23 Accessing Photo Libraries 447

Sample App 447

The Assets Library 448

Enumerating Asset Groups and Assets 448

Permissions 449

Groups 451

Assets 455

Displaying Assets 458

Saving to the Camera Roll 462

Dealing with Photo Stream 465

Summary 467

Exercises 467

24 Passbook and PassKit 469

The Sample App 470

Designing the Pass 470

Pass Types 471

Pass Layout—Boarding Pass 471

Pass Layout—Coupon 471

Pass Layout—Event 472

Pass Layout—Generic 473

Pass Layout—Store Card 474

Pass Presentation 474

Building the Pass 476

Basic Pass Identification 477

Pass Relevance Information 478

Barcode Identification 478

Pass Visual Appearance Information 479

Pass Fields 479

Signing and Packaging the Pass 482

Creating the Pass Type ID 482

Creating the Pass Signing Certificate 484

Creating the Manifest 489

Signing and Packaging the Pass 489

Testing the Pass 490

Interacting with Passes in an App 490

Updating Passes Automatically 501

Summary 502

Exercises 502

25 Debugging and Instruments 503

Introduction to Debugging 503

The First Computer Bug 504

Debugging Basics with Xcode 504

Breakpoints 506

Customizing Breakpoints 507

Symbolic and Exception Breakpoints 508

Breakpoint Scope 508

Working with the Debugger 509

Instruments 511

The Instruments Interface 512

Exploring Instruments: The Time Profiler 514

Exploring Instruments: Leaks 516

Going Further with Instruments 519

Summary 519

Exercises 520

Index 521

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)