Step into Xcode: Table of Contents
- Introduction
Part I – The Life Cycle of a Mac OS X Application
- 1 Kicking the Tires
- 1.1 First Run
- 1.2 Hello World
- 1.3 What Went Where
- 1.4 Summary
- 2 Simple Workflow and Passive Debugging
- 2.1 Linear Regression
- 2.2 Plan of Action
- 2.3 A Command-Line Tool
- 2.4 Build Errors
- 2.5 Simple Debugging
- 2.6 Summary
- 3 Simple Active Debugging
- 3.1 The Next Step
- 3.2 Active Debugging
- 3.3 Summary
- 4 Compilation: the Basics
- 4.1 Compiling
- 4.2 Linking
- 4.3 Dynamic Loading
- 4.4 Prebinding
- 4.5 ZeroLink
- 4.6 Summary
- 5 Starting a Cocoa Application
- 5.1 Plan of Action
- 5.1.1 MVC: Model/View/Controller
- 5.1.2 The Model
- 5.1.3 The Controller
- 5.1.4 The View(s)
- 5.2 Starting a New Project
- 5.3 Implementation: Model
- 5.3.1 DataPoint
- 5.3.2 Regression
- 5.3.3 Model: Done
- 5.4 Summary
- 6 A Cocoa Application: Views
- 6.1 Interface Builder
- 6.2 Layout
- 6.3 Sizing
- 6.4 A Split View
- 6.5 Summary
- 7 A Cocoa Application: Controllers
- 7.1 Still in Interface Builder
- 7.2 NSObjectController: Document
- 7.3 NSObjectController: Model
- 7.4 NSArrayController: DataPoints
- 7.5 Value Binding
- 7.6 Actions and Outlets
- 7.7 MyDocument
- 7.8 Application Properties
- 7.9 Building
- 7.10 Summary
- 8 Property Lists
- 8.1 Data Types
- 8.2 Property List Files
- 8.2.1 Writing a Property List
- 8.2.2 Examining Property Lists
- 8.3 Other Formats
- 8.3.1 ASCII Property Lists
- 8.3.2 Binary Property Lists
- 8.4 Text Macros
- 8.5 Summary
- 9 Libraries and Dependent Targets
- 9.1 Adding a Target
- 9.2 Library Design
- 9.3 Modifying Linear
- 9.4 A Dependent Target
- 9.5 Examining the Library
- 9.6 Running the Library
- 9.7 Summary
- 10 File Packages and Bundles
- 10.1 A Simple Package: RTFD
- 10.2 Bundles
- 10.3 Application Bundles
- 10.4 Info.plist
- 10.4.1 Keys for All Bundles
- 10.4.2 Keys for Applications
- 10.4.3 Keys for Plug-Ins
- 10.4.4 Keys for Java
- 10.4.5 Keys for Preference Panes
- 10.4.6 Keys for Dashboard Widgets
- 10.5 Summary
- 11 Creating a Custom View
- 11.1 Controller
- 11.2 View
- 11.3 The Delegate Design Pattern
- 11.4 The Custom View
- 11.5 Showing the Window
- 11.6 Testing
- 11.7 Debugging a View
- 11.8 Summary
- 12 Dynamic Libraries and Frameworks
- 12.1 Adding a Framework Target
- 12.2 Framework Structure
- 12.3 Using the Framework
- 12.4 Where Frameworks Go
- 12.5 Private Frameworks
- 12.6 Prebinding
- 12.7 Summary
- 13 Version Control
- 13.1 Setting up a Repository
- 13.2 Controlling Linear
- 13.3 . . . Long Live Linear
- 13.4 Tagging
- 13.5 Summary
- 14 Cross-Development
- 14.1 Cross-Development SDKs
- 14.2 Nib Compatibility
- 14.3 NSTableDataSource
- 14.4 Add, Remove, Compute, and Graph
- 14.5 Run and Archive
- 14.6 A More Sophisticated Approach
- 14.7 Producing a Universal Binary
- 14.7.1 Audit for Portability
- 14.7.2 Auditing Linear
- 14.7.3 Building Universal
- 14.7.4 Mixing SDKs
- 14.8 Summary
- 15 Using the Data Modeling Tools
- 15.1 Data Modeling
- 15.2 Revisiting the Model
- 15.2.1 DataPoint
- 15.2.2 Regression
- 15.2.3 MyDocument
- 15.3 Interface Builder
- 15.4 Build and Run
- 15.5 Adding an Entity
- 15.5.1 Adding to the Data Model
- 15.5.2 Human Interface
- 15.5.3 First Run
- 15.5.4 One More Table
- 15.6 Summary
- 16 Spotlight
- 16.1 How Data Gets into Spotlight
- 16.2 Uniform Type Identifiers
- 16.3 The Metadata Plug-in
- 16.3.1 Packaging the Plug-in
- 16.4 Core Data and Metadata
- 16.5 The Proof of the Pudding
- 16.6 Summary
- 17 Finishing Touches
- 17.1 Trimming the Menus
- 17.2 Avoiding Singularity
- 17.3 Localization
- 17.3.1 Credits.rtf
- 17.3.2 MainMenu.nib
- 17.3.3 MyDocument.nib
- 17.3.4 GraphWindow.nib
- 17.3.5 InfoPlist.strings
- 17.3.6 Trying it out
- 17.3.7 Localizable.strings
- 17.4 Checking Memory Usage
- 17.5 The Release Build Configuration
- 17.6 Dead-Code Stripping
- 17.7 xcodebuild
- 17.8 Summary
Part II – Xcode Tasks
- 18 Navigating an Xcode Project
- 18.1 Editor Panes
- 18.1.1 Jumps
- 18.1.2 Code Sense
- 18.1.3 Navigation Bar
- 18.1.4 Editor Modes
- 18.2 Project Find
- 18.3 The Favorites Bar
- 18.4 Groups & Files
- 18.4.1 The Project Group
- 18.4.2 The Targets Group
- 18.4.3 Executables
- 18.4.4 Smart Groups
- 18.4.5 Symbol Smart Group
- 18.5 Class Browser
- 18.6 Class Model
- 18.7 Project Layout
- 18.7.1 Default Layout
- 18.7.2 All-in-one Layout
- 18.7.3 Condensed Layout
- 18.8 Summary
- 19 Xcode for CodeWarrior Veterans
- 19.1 Losses
- 19.2 Make Yourself at Home
- 19.2.1 The Project Window
- 19.2.2 Key Mapping
- 19.2.3 Build Behavior
- 19.2.4 Window Behavior
- 19.3 Converting a CodeWarrior Project
- 19.3.1 Importing the Project
- 19.3.2 Targets and Configurations
- 19.4 Traps in Conversion
- 19.5 Exporting Symbols
- 19.5.1 #pragma export
- 19.5.2 Another way
- 19.6 Summary
- 20 Xcode for Make Veterans
- 20.1 Xcode Build Variables
- 20.2 Custom Build Rules
- 20.3 Run Script Build Phase
- 20.4 Under the Hood: A Simple Build
- 20.5 The xcodebuild Tool
- 20.6 Settings Hierarchy
- 20.7 Build Configurations
- 20.8 Summary
- 21 More About Debugging
- 21.1 Debugging Techniques
- 21.2 Printing Values
- 21.3 Custom Formatters
- 21.4 Breakpoint Commands
- 21.5 Breakpoint Conditions
- 21.6 Lazy Symbol Loading
- 21.7 Zombies
- 21.7.1 Released-Pointer Aliasing
- 21.7.2 Zombies in Cocoa
- 21.7.3 Zombies in Core Foundation
- 21.8 Further Reading
- 21.9 Summary
- 22 Xcode and Speed
- 22.1 Precompiled Headers
- 22.2 Predictive Compilation
- 22.3 Distributed Builds
- 22.4 ZeroLink
- 22.5 Project Indexing
- 22.6 Summary
- 23 AppleScript Studio
- 23.1 An AppleScript Application
- 23.2 Unit Testing
- 23.2.1 Adding OCUnit
- 23.2.2 Test Cases
- 23.2.3 Testing Options
- 23.3 Summary
- 24 A Large Project
- 24.1 Graphviz
- 24.2 Preparing the Project
- 24.3 An External Build Project
- 24.4 Debugging a Custom Executable
- 24.5 Performance
- 24.6 A Better Way to Include Files
- 24.6.1 The Script
- 24.6.2 Building the Project Index
- 24.6.3 Compromising with AppleScript
- 24.7 Summary
- 25 Closing Snippets
- 25.1 Miscellaneous Traps
- 25.2 Miscellaneous Tips
- 25.3 Documentation
- 25.3.1 The Documentation Window
- 25.3.2 Documentation Updates
- Appendix A Installing Xcode
- A.1 Apple Developer Connection
- A.1.1 Downloading from ADC
- A.1.2 Purchasing a CD
- A.2 Setting up the Dock
- Appendix B Some Build Variables