Mastering Mac OS X’s Cocoa Frameworks, with Xcode and Objective-C ppt

393 735 0
Mastering Mac OS X’s Cocoa Frameworks, with Xcode and Objective-C ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nutting Cocoa on the Mac Learn Companion eBook Available Trim: 7.5 x 9.25 spine = 0.875" 392 page count Mastering Mac OS X’s Cocoa Frameworks, with Xcode and Objective-C Jack Nutting | David Mark | Jeff LaMarche Learn Cocoa on the Mac COMPANION eBOOK SEE LAST PAGE FOR DETAILS ON $10 eBOOK VERSION US $39.99 Shelve in Mac User level: Beginner-Intermediate www.apress.com SOURCE CODE ONLINE BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® ISBN 978-1-4302-1859-3 9 781430 218593 5 39 9 9 this print for content only—size & color not accurate CYAN MAGENTA YELLOW BLACK PANTONE 123 C SPOT MATTE L earn Cocoa on the Mac presents complete coverage of the latest Cocoa frameworks in a logical, step-by-step progression of discussions and tutori- als. The base frameworks are introduced and demonstrated: AppKit for all the standard graphical controls and the Foundation framework classes for Objec- tive-C. You’ll dig into the basic UI objects and then attack the fundamentals of Cocoa Bindings, part of Apple’s comprehensive implementation of the Model- View-Controller (MVC) design pattern. Then it’s on to a comprehensive look at Core Data, the key to all data-driv- en applications, from basic concepts to data modeling and even more ad- vanced data techniques. You’ll also learn drawing with Core Graphics and Core Animation, le management, as well as the latest technique introduced with Snow Leopard: using Grand Central Dispatch to make your applications concurrent, in order to make the most of today’s multi-core processors. Through a combination of pragmatic problem-solving and a deep respect for Cocoa’s underlying design philosophies, you’ll learn about the diverse capabilities of the various APIs and then how to put them all to use in dy- namic combinations. And when you’re done, you’ll have an integrated view of Cocoa’s components and how to use them to build great Mac OS X apps with this rich and mature toolset. What you’ll learn • How to build your own Cocoa applications—this is much more than just a quick introduction to Cocoa! • What makes Cocoa and its MVC architecture tick • Ecient coding techniques for stitching together powerful APIs • How to leverage Cocoa’s design patterns and put them to proper use in your own code Who is this book for? Those new to Mac OS X development with a basic understanding of object- oriented programming and seasoned developers who want to master the lat- est Cocoa frameworks, as well as iPhone developers who want to extend their knowledge of Cocoa Touch to include Mac-specic technologies. Jack Nutting, veteran Cocoa expert back to the early days of NextStep, along with Dave Mark and Je LaMarche, the bestselling authors of Beginning iPhone 3 Development, share their knowledge of and keen insights for making great Mac OS X apps. RELATED TITLES www.it-ebooks.info www.it-ebooks.info i Learn Cocoa on the Mac ■ ■ ■ Jack Nutting, Dave Mark and Jeff LaMarche www.it-ebooks.info ii Learn Cocoa on the Mac Copyright © 2010 by Jack Nutting, David Mark and Jeff LaMarche All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-4302-1859-3 ISBN-13 (electronic): 978-1-4302-1860-9 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. President and Publisher: Paul Manning Lead Editors: Clay Andres, Brian MacDonald, Matthew Moodie, Douglas Pundick Technical Reviewer: Mark Dalrymple Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Duncan Parkes, Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Coordinating Editor: Mary Tobin Copy Editor: Tracy Brown Collins Compositor: MacPS, LLC Indexer: John Collin Artist: April Milne Cover Designer: Anna Ishchenko Photo Credit: Weronica Meijer Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders- ny@springer-sbm.com, or visit http://www.springeronline.com. For information on translations, please e-mail info@apress.com, or visit http://www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at http://www.apress.com/info/bulksales. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. www.it-ebooks.info iii www.it-ebooks.info iv Contents at a Glance ■Contents at a Glance iv ■Contents v ■Foreword xi ■About the Authors xii ■About the Technical Reviewer xiii ■Acknowledgments xiv ■Preface xv ■Chapter 1: Must Love Cocoa 1 ■Chapter 2: Hello, World 5 ■Chapter 3: Lights, Camera… Actions! (and Outlets, Too) 29 ■Chapter 4: GUI Components 55 ■Chapter 5: Using Table Views 91 ■Chapter 6: Cocoa Bindings 105 ■Chapter 7: Core Data Basics 133 ■Chapter 8: Core Data Relationships 165 ■Chapter 9: Search and Retrieve Core Data with Criteria 183 ■Chapter 10: Windows and Menus and Sheets 197 ■Chapter 11: Document-Based Applications 221 ■Chapter 12: Exceptions, Signals, Errors, and Debugging 239 ■Chapter 13: Drawing in Cocoa 259 ■Chapter 14: Advanced Drawing Topics 279 ■Chapter 15: Working with Files 303 ■Chapter 16: Concurrency 315 ■Chapter 17: Future Paths 335 ■Index 347 www.it-ebooks.info v Contents ■Contents at a Glance iv ■Contents v ■Foreword xi ■About the Authors xii ■About the Technical Reviewer xiii ■Acknowledgments xiv ■Preface xv ■Chapter 1: Must Love Cocoa 1 Get a Mac and Download the Tools 2 Download the Source Code 3 Getting Help 3 What You Need to Know Before You Begin 3 Are You Ready? 4 ■Chapter 2: Hello, World 5 Building “Hello, World” 5 Exploring the Nib File 9  The Library 10 Dragging Out a Label 12 Using the Blue Guidelines 13 The Inspector Window 14 The Attributes Inspector 15 Change the Label’s Color and Font 17 Using the Menu Editor 19 Creating Your Application Icon 21 Adding Your Icon to Your Project 22 Property Lists 25 Running Your Application 25 www.it-ebooks.info ■ CONTENTS vi Sharing Your Creation With the World 26 Goodbye, Hello World 28  ■Chapter 3: Lights, Camera… Actions! (and Outlets, Too) 29 This Chapter’s Application 30 Frameworks, Frameworks Everywhere 30 The Foundation Framework 31 The AppKit Framework 31 The Cocoa Way: Model-View-Controller 32 Outlets, Actions, and Controllers 33 Declaring Outlets 33 Declaring Actions 34 Outlets and Actions in Action 35 Enabling Garbage Collection 35 Creating Our Controller Class 37 Declaring an Action and Outlet 38 Back to Interface Builder 39 Setting Up the Window 42 Designing the Window’s Interface 46 Connecting the Outlet 48 Connecting the Buttons to Our Action 49 Implementing the Action Method 50 The Application Delegate 51 Configuring the Application to Quit on Window Close 52 Using the Documentation Browser 53 Bring It on Home 54 ■Chapter 4: GUI Components 55 Creating the VillainTracker Application 57 Creating the VillainTrackerAppDelegate Class 58 Planning for the GUI 60 Building Your Interface 62 Bringing Out Your Text Fields 62 Letting them Pick Dates 64 Creating the Combo Box 65 Indicating a Rating with a Level Indicator 66 Adding Radio Buttons in a Matrix 67 Adding an Image View 70 Adding Checkboxes in a Matrix 71 Configuring a Popup Button 72 Inserting a Text View 73 Making Logical Groupings 73 Resizing 76 Time for the Controller 78 Making All the Connections 78 Getting Started with Coding 80 Standardizing Key Names 80 Creating the Default Villain 81 Paying Attention to Detail 82 www.it-ebooks.info ■ CONTENTS vii Responding to Input 87 In Conclusion 90 ■Chapter 5: Using Table Views 91 Preparing AppController for Multiple Villains 91 Making Way for the Table View 93 Tweaking the Autosizing Characteristics 96 Making Some New Connections 98 Making Way for the Table View: Code Edition 99 The Table View Needs Your Help 100 Adding and Deleting Villains 102 In Conclusion 104 ■Chapter 6: Cocoa Bindings 105 Binding to Simple Controls 106 Create the DungeonThing Project 106 Create a Preferences Window 107 Binding to NSUserDefaultsController 111 Create the Main Window 114 Set Up the DungeonThingAppDelegate 116 Define Your Constants 116 Specify Default Preferences Values 117 Create the Action Methods 118 Binding to a Table View 120 Make the Code Bindings-Ready 121 Show History in Tables 124 Create and Configure an Array Controller 126 Bind Table Display via the Array Controller 128 Bind a Text Field via the Array Controller’s Selection 128 Making Sure it Works 129 Rinse, Repeat, Rinse, Repeat 129 Okay, But How Did That Work? 129 Key-Value Coding 129 Key-Value Observing 131 Cocoa Bindings: How It Works 131 In Conclusion 132 ■Chapter 7: Core Data Basics 133 What You’ve Been Missing 133 Creating MythBase 135 Defining the Model 136 The Automatic GUI 142 Refining the GUI 145 Exploring the Template Code 150 The App Delegate Interface 150 The App Delegate Implementation 152 Adding Business Logic 159 Validating Single Attributes 160 Validating Multiple Attributes 160 Creating a Custom Attribute 163 www.it-ebooks.info ■ CONTENTS viii In Conclusion 164 ■Chapter 8: Core Data Relationships 165 Modeling New Entities and Relationships 166 Model Versioning and Migrations 167 Preparing for Multiple Model Versions 167 Adding New Entities 167 Add Relationships 168 Creating a Simple Migration 170 Time to Run 172 Updating the GUI 173 Create the Band Window 173 Giving Useful Names to Array Controllers 174 Putting People in Bands 175 Showing the Bands’ Members 177 Create a Venue Window 179 Adding a Gig List to the Band Window 179 Wrapping Up Relationships 181 ■Chapter 9: Search and Retrieve Core Data with Criteria 183 Creating QuoteMonger 183 Create the Project and Its Data Model 184 The Data Entry Window 185 Creating the Quote Finder Window 188 Limiting Results with NSPredicate 189 Creating Predicates 189 Specifying an NSAppController’s Predicate in Interface Builder 191 User-Defined Predicates 191 Adding a Predicate to the App Delegate 192 Add a Predicate Editor to the Search Window 193 Configuring the Predicate Editor 193 Saving a Predicate 195 In Conclusion 196 ■Chapter 10: Windows and Menus and Sheets 197 NSWindow and NSPanel 197 Standard System Panels 201 A Controller With a Nib of Its Own 205 Modal Windows 209 System Menus 211 Standard Application Menu Items 212 Your Own Menus 212 Sheets 218 Wrap-up 220 ■Chapter 11: Document-Based Applications 221 Creating the ColorMix Application 222 Examining the Default Nib Files 223 Defining the Model 223 Setting Two Colors 224 The Simplest of GUIs 225 www.it-ebooks.info [...]... implemented as a Cocoa class Another benefit of using Cocoa is that it is tightly integrated with Mac OS X Build your application using Cocoa, and your application will play well with others and will interface seamlessly with Mac OS X elements like the Finder and the Dock WHEN IS 20 YEARS NOT 20 YEARS? Cocoa has been around in one form or another since 1986 The technologies that we call Cocoa evolved... 1990s, and then later as an independent consultant Dave Mark is a long-time Mac developer and author and has written a number of books on Macintosh development, including Learn C on the Macintosh, The Macintosh Programming Primer series, and Ultimate Mac Programming His blog can be found at http://www.davemark.com xii www.it-ebooks.info About the Technical Reviewer Mark Dalrymple is a long-time Mac and. .. the Mac OS, what we now know as Mac OS X, basing much of the new operating system on technologies acquired from NeXT As Mac OS X evolved, so did Cocoa Apple added technologies from the classic Mac OS, like QuickTime, as well as completely new technologies, like the Quartz rendering system that enables all the fancy visual 1 www.it-ebooks.info 2 CHAPTER 1: Must Love Cocoa effects and animation that OS. .. sure that they kept the Mac s famed ease-of-use in the process Bottom line: Cocoa is constantly evolving and expanding The development tools, libraries, and frameworks you’ll be learning in this book are the result of more than 20 years of experimentation and refinement Get a Mac and Download the Tools Before you can begin creating applications with Cocoa, you’ll need a Macintosh computer It doesn’t... and Dorotea, who’ve put up with my many long nights and “lost weekends” as I worked on this book, and have been more patient than I could have hoped for; this book is dedicated to them xiv www.it-ebooks.info Preface I first encountered Cocoa as a college student in about 1989 Of course, that was before the iPhone, before Mac OS X, and before it was even called Cocoa Back then, the seed of today’s Cocoa. .. loops, variables, pointers, and linked lists This book also assumes that you understand the fundamentals of object-oriented programming and are familiar with the Objective-C programming language Starting with Mac OS X Leopard 10.5, a new version of the language was introduced, called Objective-C 2.0 Don’t worry if you’re not familiar with the more recent additions to the Objective-C language We’ll be... crossplatform toolkits, Internet publishing tools, high-performance web servers, and end-user desktop applications He is also the principal author of Advanced Mac OS X Programming (Big Nerd Ranch, 2005) and Learn Objective-C on the Mac (Apress, 2009) In his spare time, Mark plays trombone and bassoon, and makes balloon animals xiii www.it-ebooks.info Acknowledgments This book would never have been possible... for Mac OS X applications As you make your way through this book, you’ll learn all about the Cocoa frameworks and runtime environment For the moment, think of Cocoa as a programmer’s assistant that takes care of much of the housekeeping that goes along with Mac development Almost every common task performed by a Mac application, from drawing a window to blinking the cursor in a text field, is handled... details with a fine-toothed comb, keeping me honest and making me look good at the same time Brian MacDonald’s vantage point as someone with great technical knowledge, but not detailed experience with Cocoa, helped uncover bits and pieces of the book that needed to be expanded or compacted Throughout the last several months of the writing, Mary Tobin has been consistently patient and helpful with this... The Mac is a great computing platform, and Cocoa is the best tool to use to build your Mac applications If you are coming to the Mac from another platform, you may find it a bit disorienting working with Cocoa and Objective-C Even though you might find it hard to get your bearings at first, as you make your way through this book, we’re confident that you’ll soon start to wrap your head around the “Cocoa . Nutting Cocoa on the Mac Learn Companion eBook Available Trim: 7.5 x 9.25 spine = 0.875" 392 page count Mastering Mac OS X’s Cocoa Frameworks, with Xcode and Objective-C Jack Nutting. implemented as a Cocoa class. Another benefit of using Cocoa is that it is tightly integrated with Mac OS X. Build your application using Cocoa, and your application will play well with others and will. is this book for? Those new to Mac OS X development with a basic understanding of object- oriented programming and seasoned developers who want to master the lat- est Cocoa frameworks, as well

Ngày đăng: 31/03/2014, 17:20

Từ khóa liên quan

Mục lục

  • Prelim

  • Contents at a Glance

  • Contents

  • Foreword

  • About the Authors

  • About the Technical Reviewer

  • Acknowledgements

  • Preface

  • Must Love Cocoa

    • Get a Mac and Download the Tools

    • Download the Source Code

    • Getting Help

    • What You Need to Know Before You Begin

    • Are You Ready?

  • Hello, World

    • Building “Hello, World”

    • Exploring the Nib File

    • The Library

    • Dragging Out a Label

    • Using the Blue Guidelines

    • The Inspector Window

    • The Attributes Inspector

    • Change the Label’s Color and Font

    • Using the Menu Editor

    • Creating Your Application Icon

    • Adding Your Icon to Your Project

    • Property Lists

    • Running Your Application

    • Sharing Your Creation With the World

    • Goodbye, Hello World

  • Lights, Camera… Actions! (and Outlets, Too)

    • This Chapter’s Application

    • Frameworks, Frameworks Everywhere

    • The Cocoa Way: Model-View-Controller

    • Outlets, Actions, and Controllers

    • Outlets and Actions in Action

      • Proxy Objects

      • Creating the Controller Instance

    • Implementing the Action Method

    • The Application Delegate

    • Bring It on Home

  • GUI Components

    • Creating the VillainTracker Application

    • Building Your Interface

    • Getting Started with Coding

      • Setting Simple Values

      • Values in Complex Controls

    • In Conclusion

  • Using Table Views

    • Preparing AppController for Multiple Villains

    • Making Way for the Table View

    • Tweaking the Autosizing Characteristics

    • Making Some New Connections

    • Making Way for the Table View: Code Edition

    • The Table View Needs Your Help

    • Adding and Deleting Villains

    • In Conclusion

  • Cocoa Bindings

    • Binding to Simple Controls

      • Add a Tab View

      • Character Generation Preferences

      • Monster Generation Preferences

      • Dungeon Generation Preferences

      • Bindings for Character Generation

      • Bindings for Monster Generation

      • Bindings for Dungeon Generation

    • Binding to a Table View

      • Dealing With Inconsistencies in Nib Files

      • Configuring the Table Views and Text Views

    • Okay, But How Did That Work?

    • In Conclusion

  • Core Data Basics

    • What You’ve Been Missing

    • Creating MythBase

      • Using Xcode’s Model Editor

      • Creating an Entity

      • Creating Attributes

      • Attributes for Unsupported Types

    • Exploring the Template Code

      • The applicationSupportDirectory Method

      • The managedObjectModel Accessor Method

      • The persistentStoreCoordinator Accessor Method

      • The managedObjectContext Accessor Method

      • An NSWindow Delegate Method

      • The saveAction: Action Method

      • An NSApplication Delegate Method

      • The Obligatory Dealloc Method

    • Adding Business Logic

    • In Conclusion

  • Core Data Relationships

    • Modeling New Entities and Relationships

    • Updating the GUI

    • Wrapping Up Relationships

  • Search and Retrieve Core Data with Criteria

    • Creating QuoteMonger

      • A Two-Part Autogenerated Window

      • Smoothing Out the Rough Spots

      • Enter Some Initial Quotes

    • Limiting Results with NSPredicate

    • User-Defined Predicates

    • Saving a Predicate

    • In Conclusion

  • Windows and Menus and Sheets

    • NSWindow and NSPanel

      • Handling Input

      • To Use a Panel, or Not to Use a Panel

      • Window Attributes

      • The Color Panel

      • The Font Panel

      • Loading a Nib With NSWindowController

      • Subclassing NSWindowController

      • The NSAlert Functions

      • Open Panels and Save Panels

    • System Menus

      • Enabling/Disabling With Bindings

      • Enabling/Disabling With First Responder

    • Sheets

    • Wrap-up

  • Document-Based Applications

    • Creating the ColorMix Application

    • Setting Two Colors

    • Settling on a File Format

    • Adding Color

    • About Undo and Redo

    • In Conclusion

  • Exceptions, Signals, Errors, and Debugging

    • Exception Handling

    • Worse than Exceptions: Death by Signal

    • NSError

    • In Conclusion

  • Drawing in Cocoa

    • Fundamentals

    • Creating an NSView Subclass

    • LOLmaker

      • Drawing a Bitmap

      • Let It Scroll

      • Drawing Text

    • Printing Basics

    • Wrapping Up

  • Advanced Drawing Topics

    • Editing a Curve

    • Core Animation: A Primer

    • What Have We Done?

  • Working with Files

    • Implicit File Access

    • High-level File Operations

    • Filing It All Away

  • Concurrency

    • SlowWorker

    • Threading Basics

    • Vitalizing SlowWorker

    • GCD: Low-Level Queuing

      • Don’t Forget That Main Thread

      • Concurrent Blocks

    • A Little Concurrency Goes a Long Way

  • Future Paths

    • More Cocoa-isms

      • Enumeration

      • Observing Notifications Using Blocks

      • Filtering

    • Cocoa in a Foreign Language

    • Ported Cocoa

    • Here at the End of All Things

  • Index

    • ¦ Symbols

    • ¦ A

    • B

    • ¦

    • C

    • ¦

    • D

    • ¦

    • ¦ E

    • ¦ F

    • ¦ G

    • ¦ H

    • ¦ I

    • J

    • ¦

    • ¦ K

    • ¦ L

    • M

    • ¦

    • ¦ N

    • ¦ O

    • ¦ P

    • R

    • ¦

    • ¦ Q

    • ¦ S

    • ¦ T

    • U

    • ¦

    • ¦ V

    • ¦ W

    • ¦ X

    • ¦ Y

    • ¦ Z

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan