You are previewing Learn Xcode Tools for Mac OS X and iPhone Development.
O'Reilly logo
Learn Xcode Tools for Mac OS X and iPhone Development

Book Description

This book will give you a thorough grounding in the principal and supporting tools and technologies that make up the Xcode Developer Tools suite. It is the first book to examine the complete Apple programming environment for both Mac OS X and iPhone.

Table of Contents

  1. Copyright
  2. About the Authors
  3. About the Technical Reviewer
  4. Acknowledgments
  5. Preface
  6. 1. Introducing Xcode Tools for Mac OS X and the iPhone
    1. 1.1. Software Development Choices for the Mac Programmer
    2. 1.2. Why You Should Develop Using Xcode Tools
    3. 1.3. Xcode, Cocoa, and Objective-C
    4. 1.4. The Apple Xcode Developer Tools Family
    5. 1.5. What You'll Find in This Book
      1. 1.5.1. Part 1
      2. 1.5.2. Part 2
      3. 1.5.3. Part 3
    6. 1.6. What You Won't Find in This Book
    7. 1.7. Summary
  7. I. The Core Xcode Toolset
    1. 2. Introducing the Xcode Workspace
      1. 2.1. Getting and Installing Xcode Developer Tools
        1. 2.1.1. Getting Xcode
        2. 2.1.2. Installing Xcode
          1. 2.1.2.1. Installation Location
          2. 2.1.2.2. Custom Installation Options
          3. 2.1.2.3. What the Installation Added
        3. 2.1.3. Removing Your Xcode Developer Tools Installation
      2. 2.2. Getting to Know the Xcode Workspace
        1. 2.2.1. The Welcome to Xcode Window
        2. 2.2.2. The Xcode Clean Screen View
        3. 2.2.3. Starting a New Project
      3. 2.3. The Xcode Workspace Working Environment
        1. 2.3.1. Groups & Files List
          1. 2.3.1.1. Find Results
          2. 2.3.1.2. Bookmarks
          3. 2.3.1.3. SCM
          4. 2.3.1.4. Implementation Files and NIB Files
        2. 2.3.2. Detail View
        3. 2.3.3. Editor View
        4. 2.3.4. Toolbar
        5. 2.3.5. Favorites Bar
        6. 2.3.6. Status Bar
      4. 2.4. It's All Gone Horribly Wrong
      5. 2.5. Xcode Workspace Preferences
        1. 2.5.1. General
        2. 2.5.2. Code Sense
        3. 2.5.3. Building
        4. 2.5.4. Distributed Builds
        5. 2.5.5. Debugging
        6. 2.5.6. Key Bindings
        7. 2.5.7. Text Editing, Fonts & Colors, and Indentation
        8. 2.5.8. File Types
        9. 2.5.9. Source Trees
        10. 2.5.10. SCM
        11. 2.5.11. Documentation
      6. 2.6. Summary
    2. 3. Interface Builder
      1. 3.1. Professional User Interface Design—and More—for Your Xcode Projects
      2. 3.2. Getting to Know the Interface Builder Environment
        1. 3.2.1. Adding Some Controls to Your User Interface
        2. 3.2.2. Positioning and Aligning Controls and Windows
        3. 3.2.3. Autosizing Controls
        4. 3.2.4. The Library in More Depth
          1. 3.2.4.1. Library Window Layout
          2. 3.2.4.2. Customizing the Layout
      3. 3.3. Connecting the Pieces
        1. 3.3.1. The Documents Window
        2. 3.3.2. The Inevitable Hello World Program
        3. 3.3.3. Incremental Development—Adding Features to Your Hello World Program
      4. 3.4. Creating a Document-Based Application
        1. 3.4.1. Implementing File Saving and Reading
        2. 3.4.2. A Little Polish
      5. 3.5. Summary
    3. 4. Core iPhone Tools
      1. 4.1. First Things First: What You Need to Develop iPhone Software
      2. 4.2. Getting and Installing the SDK
      3. 4.3. Writing a Simple iPhone Application
        1. 4.3.1. Adding Some Polish
        2. 4.3.2. Just One More Thing
      4. 4.4. Summary
    4. 5. Frameworks in Xcode
      1. 5.1. A Short Tour of the Frameworks
        1. 5.1.1. What Are the Frameworks?
        2. 5.1.2. Location of the Frameworks
        3. 5.1.3. Other Frameworks
        4. 5.1.4. Where to Look for More Information
      2. 5.2. Using Frameworks in Applications
        1. 5.2.1. The WebKit Framework—Create Your Own Web Browser
        2. 5.2.2. The Core Data Framework—Building a Simple Database Application
          1. 5.2.2.1. A Potential Gotcha
          2. 5.2.2.2. Choosing a Data Store
        3. 5.2.3. The ScreenSaver Framework
        4. 5.2.4. Summary
    5. 6. Model-View-Controller in Xcode
      1. 6.1. Understanding MVC
      2. 6.2. The Simplest Example
      3. 6.3. A More Complex Example
      4. 6.4. Summary
    6. 7. Debugging Your Xcode Projects
      1. 7.1. The Debugger and Console Views
      2. 7.2. Creating a Project to Debug
      3. 7.3. Running and Debugging the Project
        1. 7.3.1. Syntax Errors
        2. 7.3.2. Debugging with Breakpoints
        3. 7.3.3. Using NSLog to Track Changing Properties
        4. 7.3.4. Checking Syntax in the Documentation
      4. 7.4. Exploring the Debugger
        1. 7.4.1. Debugging Features in the Code Editor
        2. 7.4.2. The Main Debugger Window
        3. 7.4.3. The Mini Debugger
        4. 7.4.4. The Console
      5. 7.5. Summary
    7. 8. Xcode Documentation
      1. 8.1. Overview of Documentation Resources for Xcode
      2. 8.2. Quick Help
      3. 8.3. ADC Documentation
        1. 8.3.1. Cocoa Fundamentals Guide
        2. 8.3.2. Xcode Workflow and Cocoa Application Tutorials
        3. 8.3.3. Recommended Reading for Xcode Developers
        4. 8.3.4. Getting Around the ADC Documentation
      4. 8.4. Other Resources on the Apple Developer Site
      5. 8.5. Third-Party Online Resources
      6. 8.6. Other Sources of Information
        1. 8.6.1. Keeping a High Signal-to-Noise Ratio
        2. 8.6.2. Mailing Lists and Web Forums
        3. 8.6.3. RSS Feeds
      7. 8.7. Creating Your Own Developer Documentation
        1. 8.7.1. Downloading and Installing Doxygen
        2. 8.7.2. Overview of Documentation Creation with Doxygen
        3. 8.7.3. Commenting the Code
        4. 8.7.4. Creating Documentation for TemperatureConverter
        5. 8.7.5. Converting the HTML into a Docset
        6. 8.7.6. Advanced Doxygen Topics
      8. 8.8. Summary
    8. 9. Developing an Application
      1. 9.1. Defining the Problem
      2. 9.2. Designing the Application
        1. 9.2.1. Sketching Out the Problem Space
        2. 9.2.2. The Data Model
        3. 9.2.3. Creating the Project
        4. 9.2.4. Choosing the Data Store Format
        5. 9.2.5. Building the User Interfaces
          1. 9.2.5.1. The Core Data Entity Interface Assistant
          2. 9.2.5.2. Developing the User Interface
          3. 9.2.5.3. Tidying Up and Adding the Extra Buttons
          4. 9.2.5.4. Creating the Secondary Windows
          5. 9.2.5.5. Configuring the Search Capabilities
        6. 9.2.6. Running the Application
        7. 9.2.7. What to Do if It Doesn't Work
        8. 9.2.8. Making Improvements
          1. 9.2.8.1. Displaying the Full Name in One Field
          2. 9.2.8.2. Displaying the Total Amount Earned Across the Journal Entries
        9. 9.2.9. Where to Take the Application from Here
      3. 9.3. Looking Back and Looking Forward
  8. II. Enhancing Development with Companion Tools
    1. 10. Source-Code Management with Subversion
      1. 10.1. Introduction to Subversion
        1. 10.1.1. The Subversion Work Cycle
        2. 10.1.2. One Repository or Many?
          1. 10.1.2.1. Using a Single Repository
          2. 10.1.2.2. Using Individual Repositories
        3. 10.1.3. Where to Get More Information
      2. 10.2. Installing a Local Subversion Server
        1. 10.2.1. Creating a Repository
        2. 10.2.2. Configuring the Repository in Xcode
        3. 10.2.3. Populating the Repository with Projects
        4. 10.2.4. Getting a Working Copy out of the Repository
        5. 10.2.5. Making Changes and Committing Code
        6. 10.2.6. Comparing Revisions and Rolling Back
        7. 10.2.7. Handling Version Conflicts
      3. 10.3. Using an Online Subversion Server
      4. 10.4. Summary
    2. 11. Unit Testing in Xcode
      1. 11.1. Introducing Unit Testing
      2. 11.2. Unit Testing in Practice
        1. 11.2.1. Setting Up a Project for Unit Testing
        2. 11.2.2. Writing Unit Tests
        3. 11.2.3. Running Your First Unit Test
      3. 11.3. What Should You Test?
        1. 11.3.1. Rightness
        2. 11.3.2. Wrong Input
        3. 11.3.3. Boundary Conditions
        4. 11.3.4. Other Factors to Test
      4. 11.4. Making Your Test Suite More Efficient
      5. 11.5. Where to Go Next
        1. 11.5.1. Dependent versus Independent Unit Testing
      6. 11.6. Summary
    3. 12. Monitoring, Analysis, and Performance Tools
      1. 12.1. Instruments
        1. 12.1.1. Tracking Down a Memory Leak
          1. 12.1.1.1. Create the Application
          2. 12.1.1.2. Building the Interface
          3. 12.1.1.3. Monitoring the Application in Instruments
          4. 12.1.1.4. Analyzing the Memory Leaks
        2. 12.1.2. Tracking File Activity
        3. 12.1.3. Activity Monitor
        4. 12.1.4. What Else Can You Do with Instruments?
      2. 12.2. Shark
      3. 12.3. BigTop
      4. 12.4. Spin Control
      5. 12.5. Summary
  9. III. Supporting Tools
    1. 13. Support Tools for the Busy Developer
      1. 13.1. Icon Composer
        1. 13.1.1. Creating the Basic Image for an Application Icon
        2. 13.1.2. Creating the Icon in Icon Composer
      2. 13.2. Pixie
      3. 13.3. FileMerge
      4. 13.4. Property List Editor
      5. 13.5. Adding Help Functionality
        1. 13.5.1. Help in Xcode-based Applications
        2. 13.5.2. Creating the XHTML Pages
        3. 13.5.3. Adding Meta Tags to the Welcome Page
        4. 13.5.4. Running the Help Indexer
        5. 13.5.5. Adding and Configuring the Help Files Within the Xcode Project
        6. 13.5.6. Testing the New Help Function
        7. 13.5.7. Adding a Help Button Linked to a Help Page
      6. 13.6. Summary
    2. 14. Usability and Accessibility
      1. 14.1. Overview of Usability
        1. 14.1.1. Consistency
        2. 14.1.2. Affordance
        3. 14.1.3. Mental Model
      2. 14.2. Usability Considerations for Mac OS X
        1. 14.2.1. Program Design Considerations for Good Usability
        2. 14.2.2. Autosizing and Auto-Positioning
        3. 14.2.3. Consistent Visual Design
        4. 14.2.4. Affordance Revisited
        5. 14.2.5. Tab Order
      3. 14.3. Special Usability Considerations for iPhone Program Design
        1. 14.3.1. Form Factor
        2. 14.3.2. Only One Window
        3. 14.3.3. One Only Application
        4. 14.3.4. Direct-Manipulation Interface
        5. 14.3.5. Gesture-Driven Interface
      4. 14.4. Accessibility in Mac OS X
        1. 14.4.1. Accessibility Considerations
          1. 14.4.1.1. Display Factors
          2. 14.4.1.2. Keyboard Operation
        2. 14.4.2. Testing Accessibility in Your Software
        3. 14.4.3. VoiceOver
      5. 14.5. Summary
    3. 15. Packaging and Distribution
      1. 15.1. Build Configurations—From Debug to Release
      2. 15.2. Using a Disk Image
      3. 15.3. PackageMaker
        1. 15.3.1. What's in Store
        2. 15.3.2. Creating an Installation Package with PackageMaker
          1. 15.3.2.1. Starting PackageMaker
          2. 15.3.2.2. Adding Content
          3. 15.3.2.3. Package Content Configuration
          4. 15.3.2.4. Package Content Ownership
          5. 15.3.2.5. Offering Choices for Custom Installations
          6. 15.3.2.6. Package-Level Configuration
          7. 15.3.2.7. Polishing the Interface
        3. 15.3.3. Building the Package
        4. 15.3.4. Testing the Installation Package
      4. 15.4. Distributing your iPhone Application
        1. 15.4.1. Preparation Steps
          1. 15.4.1.1. Information Gathering
          2. 15.4.1.2. Registration and Information Generation
        2. 15.4.2. Checking That It All Works
        3. 15.4.3. Ad Hoc Distribution
      5. 15.5. Summary