SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
In just 24 sessions of one hour or less, you can master the Objective-C language, and start using it to write powerful native applications for both Macs and iOS devices! Using this book’s straightforward, step-by-step approach, you’ll get comfortable with Objective-C’s unique capabilities… make the most of its powerful implementation of objects and messaging…work effectively with design patterns, collections, blocks, threading, and a whole lot more. Every lesson builds on what you’ve already learned, giving you a rock-solid foundation for real-world success!
Step-by-Step Instructions carefully walk you through the most common Objective-C development tasks.
Quizzes and Exercises at the end of each chapter help you test your knowledge.
By the Way notes present information related to the discussion.
Did You Know? tips offer advice or show you easier ways to perform tasks.
Watch Out! cautions alert you to possible problems and give you advice on how to avoid them.
Printed in full color—figures and code appear as they do in Xcode
Using Object-Oriented Features in Objective-C
Introduction 1
Who Should Read This Book 1
What This Book Covers 1
Downloading the Example Files 2
How This Book Is Organized 2
Part I: Getting Started with Objective-C
HOUR 1: Overview of Objective-C 7
Introducing Objective-C 7
Enrolling as an Apple Developer 8
Setting Up the Development Environment 11
Summary 19
Q&A 20
Workshop 20
HOUR 2: Object-Oriented Programming with Objective-C 23
Object-Oriented Programming in the Objective-C World 23
Creating C with Objects 26
Managing Inheritance in the Objective-C World 30
Summary 32
Q&A 32
Workshop 33
HOUR 3: Using Object-Oriented Features in Objective-C 35
Communicating to Methods with Messages 35
Allocating and Initializing Objects 39
Summary 40
Q&A 41
Workshop 41
HOUR 4: Organizing Projects with a Git Source Code Repository 43
Getting to Work with Xcode 43
Keeping Track of Your Source Code 47
Using a Remote Repository 62
Summary 66
Q&A 66
Workshop 66
HOUR 5: Using Compiler Directives 69
Exploring Your Project 69
Working with Compiler Directives 71
Using Objective-C Compiler Directives 77
Summary 78
Q&A 78
Workshop 78
Part II: Working with the Objective-C Basics
HOUR 6: Exploring Messaging and a Testbed App 81
Setting Up the Test App 81
Adding a Text Field and Connecting It to Your Code 85
Sending a Message to the Text Field 92
Reviewing the Message Syntax 94
Summary 95
Q&A 95
Workshop 95
HOUR 7: Declaring a Class in an Interface File 97
Letting Xcode Do the Work 97
Exploring Class Hierarchies 103
Declaring Classes 106
Summary 108
Q&A 108
Workshop 108
HOUR 8: Declaring Instance Variables in an Interface File 111
Declaring Instance Variables and Properties 111
Using the Class 111
Creating an Instance Variable for CurrencyConverter with id 114
Creating an Instance Variable for CurrencyConverter with the
Class Name 117
Creating an Instance Variable for CurrencyConverter with a
Superclass Name 119
Managing Instance Variable Scope 122
Summary 122
Q&A 123
Workshop 123
HOUR 9: Declaring Properties in an Interface File 125
Comparing Interface Variables and Properties 125
Using Declared Properties 130
Using Attributes 132
Using Other Attribute Decorators 135
Implementing Properties 135
Summary 136
Q&A 137
Workshop 137
HOUR 10: Declaring Methods in an Interface File 139
Working with Methods in a Class 139
Reviewing Method Syntax 140
Summary 145
Q&A 145
Workshop 146
HOUR 11: Declaring Actions in an Interface File 147
Introducing Actions 147
Comparing Actions in Mac OS X and iOS 158
Q&A 161
Workshop 161
HOUR 12: Routing Messages with Selectors 163
Getting Inside Objective-C Messages 163
Getting Inside the Objective-C Runtime 165
Working with SEL and @selector () 166
Using performSelector 167
Using NSInvocation 170
Testing Whether an Instance Can Respond to a Selector 174
Summary 174
Q&A 175
Workshop 175
HOUR 13: Building on the Foundation 177
Exploring the Foundation Framework 177
Foundation Classes 178
Foundation Paradigms and Policies 180
Summary 185
Q&A 185
Workshop 185
HOUR 14: Defining a Class in an Implementation File 187
Working with a New Project 187
Creating a New App 191
Implementing a Method 194
Expanding the Class with init Methods 197
Summary 199
Q&A 200
Workshop 200
HOUR 15: Organizing Data with Collections 201
Collecting Objects 201
Getting Familiar with Property Lists 203
Comparing the Collection Classes 205
Creating a Collection 206
Enumerating a Collection 210
Testing Membership in a Collection 212
Accessing an Object in a Collection 213
Summary 213
Q&A 213
Workshop 214
HOUR 16: Managing Memory and Runtime Objects 215
Managing Objects in Memory 215
Managing Reference Counts Manually 217
Managing Reference Counts with ARC 220
Variable Qualifiers 222
Autoreleasing Variables 223
Summary 224
Q&A 224
Workshop 224
Part III: Expanding and Extending Classes
HOUR 17: Extending a Class with Protocols and Delegates 227
Exploring the Pros and Cons of Subclassing 227
Exploring Multiple Detail Views Sample Code 228
Looking Inside Protocols 235
Working with Delegates 235
Summary 240
Q&A 240
Workshop 240
HOUR 18: Extending a Class with Categories and Extensions 243
Comparing Categories and Protocols 243
Comparing Categories to Subclasses 244
Working with Categories 246
Using Class Extensions 249
Working with Informal Protocols 250
Summary 250
Q&A 250
Workshop 251
HOUR 19: Using Associative References and Fast Enumeration 253
Catching Up on Objective-C 2.0 Time-Saving Features 253
Extending Classes by Adding Instance Variables (Sort of) 254
Using Fast Enumeration 258
Summary 261
Q&A 261
Workshop 261
HOUR 20: Working with Blocks 263
Revisiting Blocks 263
Looking at Callbacks 264
Introducing Blocks 268
Exploring Blocks in Cocoa 270
Looking Deeper into Cocoa Blocks and Memory 273
Summary 273
Q&A 274
Workshop 274
Part IV: Beyond the Basics
HOUR 21: Handling Exceptions 275
Rethinking Exceptions and Errors 275
Introducing the Exception and Error Classes 276
Identifying an Exception 281
Throwing an Exception 282
Catching an Exception 283
Summary 283
Q&A 284
Workshop 284
HOUR 22: Grand Central Dispatch: Using Queues and Threading 285
Getting Started with Concurrency 285
Introducing Queues 288
Using Dispatch Queues 290
Summary 292
Q&A 293
Workshop 293
HOUR 23: Working with the Debugger 295
Logging Information 295
Using Console Logs 296
Using Smart Breakpoints 299
Summary 304
Q&A 304
Workshop 305
HOUR 24: Using Instruments for Analysis 307
Putting Instruments in Perspective 307
Looking at Instruments 309
Getting Started with Instruments 311
Connecting to the iOS Simulator 314
Summary 316
Q&A 316
Workshop 316
Part V: Appendixes
APPENDIX A: C Syntax Summary 319
Data Types 319
Control Structures 321
APPENDIX B: Apps, Packages, and Bundles 323
APPENDIX C: Archiving and Packaging Apps for Development and Testing 329
APPENDIX D: Introducing Xcode 4 333
Getting to Know Xcode 333
Goodbye “Hello, World” 334
Hello, App Development for Mac OS X and iOS 336
Getting Started with Xcode 338
Using the Navigator 341
Using Editors 351
Working with Assistant 355
Getting Help in an Editor Window 357
Using Utilities—Inspectors 357
Using Utilities—Libraries 360
Using the Text Editor 366
Using the Organizer Window 371
Index 375