learn cocoa on the Mac, Apress出版的标准cocoa教程,学习cocoa的首选。Learn Cocoa on the macCopyright o 2013 by Jack Nutting and Peter ClarkThis work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material isconcerned, specifically the rights of translation, reprinting, reuse ofillustrations, recitation, broadcasting, reproductioncomputer software, orby similar or dissimilar methodology now known or hereafter developed Exempted from th o 3on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation,legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specificallyfor the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of thework. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Lawof the Publisher's location, in its current version, and permission for use must always be obtained from SpringerPermissions for use may be obtained through RightsLink at the Copyright Clearance Center Violations are liable toprosecution under the respective Copyright Law.ISBN978-1-4302-4542-1ISBN978-1-4302-4543-8( eBookTrademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with everyoccurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashionand to the benefit of the trademark owner, with no intention of infringement of the trademarkThe use in this publication of trade names trademarks service marks and similar terms even if they are not identifiedas such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rightsWhile the advice and information in this book are believed to be true and accurate at the date of publication, neitherthe authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that maybe made. The publisher makes no warranty, express or implied, with respect to the material contained hereinPresident and Publisher Paul ManningLead Editor: Steve AnglinDevelopmental Editor: Douglas PundickTechnical Reviewer: Nick WaynikEditorial Board: Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Louise Corrigan,Morgan Ertel, Jonathan Gennick, Jonathan Hassell, Robert Hutchinson, Michelle LowmanJames Markham, Matthew Moodie, Jeff Olson, Jeffrey Pepper, Douglas Pundick, Ben Renow-ClarkeDominic Shakeshaft, Gwenan Spearing, Matt Wade, Tom WelshCoordinating Editor: Jill BalzanoCopy editor: mary behrCompositor: SPi GlobalIndexer: SPi GlobalArtist: SPi GlobalCover Designer: Anna ishchenkoDistributed to the book trade worldwide by springer science+ Business media New York, 23 3 Spring Street, 6th FloorNew York, NY 10013. Phone 1-800-SPRINGER, fax(201)348-4505, e-mail orders-ny@springer-sbm com, or visitwww.springeronline.com.ApressMedia,LlcisaCaliforniaLlcandthesolemember(owner)isSpringerScience+Business Media Finance Inc(SSBM Finance Inc). SSBM Finance Inc is a Delaware corporationForinformationontranslationspleasee-mailrightsqapress.com,orvisitwww.apress.comApress and friends of Ed books may be purchased in bulk for academic, corporate, or promotional use e Bookversions and licenses are also available for most titles. For more information, reference our Special BulkSales-ebookLicensingwebpageatwww.apress.com/bulk-salesAny source code or other supplementary materials referenced by the author in this text is available to readersatwww.apress.comFordetailedinformationabouthowtolocateyourbookssourcecodegotowww.apress.com/source-code/We've spent many nights and weekends staring at computer screens instead of spendingtime with our wives and children, this book is dedicated to them. our wivesand children that is, not the computer screensContents at a glancePreface■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■About the authorsAbout the technical reviewerAcknowledgmentsChapter 1: Must Love Cocoa■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■Chapter 2: Hello, World maat■■■■■■■■■■■5Chapter 3: Lights, Camera Actions! (and outlets, too).■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■27Chapter 4: The First Call to ActionRBRRI n: 47Chapter 5: GUI Componentsa67Chapter6: Using TableⅥeWS,,,,,,,,,,,,,,,,,,,,,,,,,,103Chapter 7: Cocoa Bindings H BERI BIE BERR RRERREREBBEBRBERERRR RI 125Chapter 8: Core Data Basics153Chapter 9: Core Data Relationshipsu189Chapter 10: Search and Retrieve Core Data with criteria■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■209Chapter 11: Windows and Menus and sheets ammm RmaRIaniann 225Chapter 12: Document-Based Applications■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■253Contents at a glanceChapter 13: Exceptions, Signals, Errors and Debugging mmmmmmm 271Chapter 14: Drawing in cocoa mmannnmmnan 295Chapter 15: Advanced Drawing Topics mmmm mm maa.315Chapter 16: Working with Files mu341■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■Chapter17:C0 currency,,,,,,,,,,,,,,,,,,,357Chapter 18: Future Pathsas375Index 389ContentsPreface■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■About the authorsAbout the technical reviewerAcknowledgments mmmmanmamaanmmmmanmamaanmmananmmmmmaaa, XXiiiChapter 1: Must Love cocoa■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■■■■Get a mac and download the toolsDownload the source code mmmmmmmm..2Getting Help. aaenWhat You need to Know before you begin3Are you read3Chapter 2: Hello, World■■■■■■■■■■■■■■■■■■■■■■■■■■■■■国■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■5Building“ Hello,wordExploring the Nib FileThe Library..............11Dragging out a Label....12Using the blue guidelines,13The Inspector.14The Attributes Inspector…...,.,.,….……16Change the label's color and Font.ContentsCreating the application Icon ...20Adding an Icon to our Project21Property Lists22Running the application23Sharing Our Creation With the World.memaccncccaecccaccanann 24Goodbye. Hello World25Chapter 3: Lights, Camera Actions! (and outlets, too)Ea.27Frameworks, Frameworks Everywhere27The foundation framework.The AppKit Framework28The cocoa Way: Model-View- Contro|ler……29Outlets, Actions, and controllers30Outlets wwwwwwwwwwwwwwwwwww 30ActionsOutlets and Actions in Action mm31Wrap Up45Chapter 4: The First Call to Action■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■47Declaring outlets and Actions7Declaring Outlets日47Declaring Actions……………48Outlets and actions in action act 29Placeholder objects51Setting Up The window...........................52Designing the Window's Interface…...…5Creating the Controller Class59Implementing the Action Method61The application Delegate.Configuring the application to Quit on Window close..63Using the Documentation Browser....mmmmmnanmnmmmmmmmtnnnnmmn 64Wrap Up■DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD.65ContentsXChapter 5: GUI Components mmma aaRIn. 67Creating the villain Tracker Application69Building the Interface. ........................................................................................70Wiring Up the villain trackerAppDelegate Class84Getting Started with Coding.92Standardizing Key namesCreating the Default Villain93aying attention to detail94responding to Input.......,,…,………………9Wrap Up101Chapter 6: Using Table views■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■103Preparing villain TrackerAppDelegate for Multiple villainsnsn…………104Making Way for the table view.mmmmmmmmmmmmmmmmmmmmm. 105A Nasty Resize Surprise,or, Constraints to the rescue!.....,……………110Creating and Editing Constraints..111Making Way for the Table view: Code Edition116The Table view Needs Help117Adding More vi‖|ains,…….….118Selecting A Villain119Stop Your Evil Ways!.120Editing in the Table view........,.,,…,…,………………122Wrap Up123Chapter 7: cocoa Bindings a■■■■■■■■■■■■■■■■■口■■■■■■■■■■■口■■■■■■■■口■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■口125Binding to Simple controls126Creating the dungeon Thing Project and Preferences window126Binding to nsuserdefaults controller130Creating the Main Window.133Setting Up the dungeon ThingAppDelegate.Binding to a Table viewMaking the Code Bindings-ReadyConfiguring the Table views and Text views143ContentsCreating and configuring an Array controller..............…………….,145Binding the Table Display via the array Controller.147Binding a Text Field via the Array controller's Selection .Populating the array........……148Making Sure it Works………148Rinse, Repeat, Rinse, Repeat...,..,….,….….148Okay, But How Did That WorkKey-Value coding.149Key-value0 bserving…....,.,..,.,.,,.,,,,,,,…150Cocoa Bindings: How It WorksWrap Up151Chapter8: Core Data basics…,,…,,…,,,…,,…,,…,,,,…,153What we' ve Been Missing..,,,……153Creating Myth Base.Defining the Mode|........,..,,,,,,,,,,…,,,…156Using Xcode,s Model Editor157Creating an Entity…157Creating Attributes158Attributes for Unsupported TypesDesigning the GUl161Creating the Myth Base display .Displaying details163Setting up Cocoa Bindings.Binding with an Array Controller166Configuring Bindings for the Table view.....,.,…,…………168Finishing the Bindings: Save andExploring the Template code172The App Delegate Interface173The app delegate Implementation.…...,.,,,,,,,,……174