Introduction 1 Part I First Steps 1 Getting Xcode 9 Before You Do Anything 9 Requirements 10 Installing Xcode. 10 What You Get 11 Removing Xcode. 12 Apple Developer Programs 12 Through an Installer Package 13 Summary 15 2 Kicking the Tires 17 Starting Xcode 17 Hello World 19 A New Project 19 Quieting Xcode Down 21 Building and Running 21 The Real Thing 23 Getting Rid of It 23 Summary 24 3 Simple Workflow and Passive Debugging 25 Building 28 Running 30 Simple Debugging 32 Summary 33 4 Active Debugging 35 A Simple Test Case 35 Going Active 35 Setting a Breakpoint. 36 The Variables Pane 37 Stepping Through 38 Fixing the Problem 40 Behaviors 40 The Fix 42 Summary 43 5 Compilation 45 Compiling 46 Linking 50 Dynamic Loading 51 Xcode''s Refinements 52 Compiler Products 55 Intermediate Products 55 Precompiled Headers 56 Summary 56 6 Adding a Library Target 57 Adding a Target 57 Targets 58 Target Membership 58 Adding Files to a Target 59 Headers in Targets 61 A Dependent Target 62 Adding a Library 63 Debugging a Dependent Target 63 Summary 64 7 Version Control 65 Taking Control 66 Creating a Git Repository by Hand 66 The State of Your Files 68 How Subversion Views Files 68 How Git Views Files 68 How Xcode Views Files 69 Your First Commit 70 Adding a Remote Repository 71 Setting Up the Remote 71 Pushing to the Remote 72 Starting from a Repository 74 Merges and Conflicts 75 User A 75 User B 75 Merging 76 Conflicts 77 The Versions View 79 Comparison 79 Blame 81 Log 82 Branching 82 Summary 84 Part II The Life Cycle of an iOS Application 8 Starting an iOS Application 87 Planning the App 87 Model-View-Controller 87 The Model 88 The Views 89 The Controllers 90 Starting a New iPhone Project 90 Target Editor 92 Copyright, Again 93 One More Thing 97 Summary 98 9 An iOS Application: Model 99 Implementing the Model 99 Entities 100 Attributes 100 Relationships 102 Managed-Object Classes 105 Creating the Classes 105 Extending the Classes 106 Some Test Data 108 Making the Model Easier to Debug 111 Summary 111 10 An iOS Controller 113 Renaming Symbols 113 Refactoring a Method Name 114 Refactoring a Class Name 114 Editing the View Controller 116 The Table View 116 Setting Up the Passer List 117 Creating a New Passer 117 Live Issues and Fix-it 118 The Real Passer Rating 120 Another Bug 120 Running Passer Rating 123 Summary 125 11 Building a New View 127 Adding a View Controller 127 XIB Files 128 Building a View 130 Lots of Labels 132 First Tryout 134 Outlets 134 Checking Connections 137 Connecting GameListController 137 Code Completion and Snippets 139 Testing the Passer Detail View 141 Summary 141 12 Adding Table Cells 143 The Game Table 143 Schemes 147 A Custom Table Cell 149 Summary 154 13 Unit Testing 155 Logic Testing 156 Test Data 158 Testing the CSV Reader 159 Application Testing 166 SenTestingKit Assertions 168 Simple Tests 169 Equality 169 Exceptions 169 Summary 170 14 Measurement and Analysis 173 Speed 173 Memory 182 Allocations 182 Leaks 187 Zombies 189 Analysis 193 The Analyzer 193 Automatic Reference Counting 195 Summary 196 15 Storyboard 197 What Storyboard Is 197 A Storyboard Project 199 Reconstructing Passer Rating 201 Workspaces 201 Copying the Model 203 Coding the Passer List 205 Copying Views 205 A Custom Table View Cell 207 Adding a Passer Editor 210 Creating the Editor View 210 Coding the Editor Controller 212 Adding a Segue 215 Editing an Existing Passer 217 Summary 219 16 Provisioning 221 Developer Programs 221 Organizations 221 Individuals 222 The Enterprise Program 222 The Provisioning Story 222 Automatic Device Provisioning 223 The Provisioning Portal 225 Development Certificates 225 Distribution Certificates 225 Device IDs 226 Application IDs 227 Development Profiles 228 Distribution Profiles 229 Using a Signing Identity 230 Distribution Builds 231 Sharing Identities and Profiles 233 Preparing an App Store Release 234 Final Provisioning 234 iTunes Connect 234 Validating and Submitting 235 Summary 236 Part III Xcode for Mac OS X 17 Starting a Mac OS X Application 239 The Goal 239 Getting Started 240 Model 243 Porting from iOS 243 Automatic Reference Counting 246 Making the Application Twitch 248 Wiring Up a Menu 248 Loading Data into LeagueDocument 250 Summary 251 18 Wiring a Mac Application with Bindings 253 Filling the Document Window 253 A Table View 254 Autoresizing 255 Your First Object Controller 258 Binding the Team Table 260 Running Bindings 260 Laying Out Views 263 The Passer and Game Array Controllers 264 Binding the Passer Table 266 The Game Table Truncation and Dates 268 The Game Popover 269 Summary 273 19 A Custom View for Mac OS X 275 A Graphing View 276 Back to the View Controller 279 Using PasserGraphController 281 Custom View Properties 282 Summary 283 20 Localization and Autolayout 285 Adding a Localization 286 Trying It Out 287 Localizing MainMenu.xib 288 Localizing the Window XIBs 291 Translating View Strings 291 Making the Text Fit by Hand 292 Making the Text Fit Autolayout 292 Localizing Info.plist 300 Strings in Code 302 Summary 306 21 Bundles and Packages 307 A Simple Package: RTFD 308 Bundles 309 Application Bundles 309 The Info.plist File 311 Localizing Info.plist 312 Info.
plist Keys 312 Keys for All Bundles 312 Keys for iOS and Mac OS X Applications 314 Keys for Mac OS X Applications 315 iOS Keys 320 Keys for Plug-ins 322 Keys for Preference Panes 323 Keys for Dashboard Widgets 323 Summary 324 22 Frameworks 325 Adding a Framework Target 326 Populating the Framework 326 Using the Framework 327 Installing a Framework 327 Running the Application Alone 328 Where Frameworks Are Found 330 Putting the Framework in the Application 331 Building Mac Passer Rating 332 One More Thing 332 Summary 336 23 Property Lists 337 Property List Types 337 Editing Property Lists 338 A Brand New Property List 341 Why Not the Property List Editor? 345 Other Formats 348 Text Property Lists 348 Binary Property Lists 348 Specialized Property Lists 349 Summary 350 Part IV Xcode Tasks 24 Xcode 4 for Xcode 3 Veterans 353 The Desktop and the Browser 353 Start Slow 354 The Sorcerer''s Apprentice 355 The Editor 355 The Assistant Editor 355 More Than One Editor 356 Building 358 Where Did Everything Go? 358 Groups & Files 358 Detail View 360 Info Windows 360 Special-Purpose Editors 362 Browsers 364 Source Control 364 Interface Builder. 365 Other Changes 366 Summary 368 25 Documentation in Xcode 369 Intrinsic Help 369 The Quick Help Inspector 369 The Quick Help Popover 370 Open Quickly 371 Help 372 Xcode How-To''s. 373 The Documentation Organizer 373 Browsing Documentation 373 Searching Documentation 374 Bookmarks 375 Keeping Current 375 Generating Documentation 377 Installing Doxygen 378 What Doxygen Does 378 Configuring Doxygen: The Wizard 381 Configuring Doxygen: Expert Settings 383 Running Doxygen 384 Installing a Docset 385 Making Doxygen Part of Your Builds 386 Summary 388 26 The Xcode Build System 389 Xcode Build Variables 392 Settings Hierarchy 393 Editing Build Variables 395 Configurations 396 Adjusting Configurations 396 Adding Configurations 398 Configuration Files 398 Creating a Configuration File 398 SDK- and Architecture-Specific Settings 399 Preprocessing xcconfig Files 399 The xcodebuild Tool 400 Custom Build Rules 401 The Build Log 403 A Simple Build Transcript 404 Resources 406 Precompiled Header 407 Compiling Source Files 408 Linking 409 Making a Universal Binary 410 Touch 410 Summary 410 27 Instruments 411 What Instruments Is 411 Running Instruments 412 The Trace Document Window 413 The Library 419 Instrument Configuration 420 Recording 421 Saving and Reopening 423 The Instruments 424 Core Data. 424 Custom Instruments 425 Dispatch 425 File System 425 Garbage Collection 426 Graphics 426 In.