I am new to Cocoa & Mac OS X Development. This book is one of the fastest/easiest ways to get a Cocoa feeling. I really enjoyed this book. By following this book, you will develop a real Cocoa application. All steps are clearly documented (what/how/where etc). This book is not written for experienced Cocoa developers. For this people, this book would be probably to easy ('I know this already'). Table of Contents\r......Page 6 Introduction\r......Page 12 About Vermont Recipes\r......Page 13 Why Cocoa?\r......Page 15 Why Objective-C?\r......Page 17 Naming Conventions\r......Page 18 Xcode and Interface Builder\r......Page 19 New Technologies\r......Page 21 The Vermont Recipes Application Specification\r......Page 22 Downloading and Installing the Project Files\r......Page 23 Section 1: Objective-C and the Cocoa Frameworks\r......Page 24 Appliances and Utensils\r......Page 25 Ingredients\r......Page 26 Serving Suggestions\r......Page 31 Section 2: Building an Application\r......Page 32 Step 1: Create the New Project\r......Page 34 Step 2: Explore the Project\r......Page 37 Step 3: Set Xcode Preferences\r......Page 41 Step 4: Revise the Document's Header and Implementation Files\r......Page 43 Step 5: Rename the Document's Files\r......Page 47 Step 6: Edit the Document's Methods\r......Page 49 Step 7: Create and Revise the Window Controller Files\r......Page 52 Step 8: Edit the Credits File\r......Page 56 Step 9: Edit the Info.plist File\r......Page 58 Step 10: Edit the InfoPlist.strings File\r......Page 65 Step 11: Create a Localizable.strings File\r......Page 68 Step 12: Set the Project's Properties and Build Settings\r......Page 69 Step 14: Save and Archive the Project\r......Page 74 Conclusion\r......Page 75 Recipe 2: Design and Build the GUI Using Interface Builder\r......Page 76 Step 1: Explore and Revise the Document Window's Nib File\r......Page 79 Step 2: Add a Toolbar\r......Page 86 Step 3: Add a Vertical Split View\r......Page 90 Step 4: Add a Horizontal Split View\r......Page 101 Step 5: Add a Tab View\r......Page 102 Step 6: Add a Drawer\r......Page 103 Step 7: Add a Toolbar Item to Open and Close the Drawer\r......Page 106 Step 9: Save and Archive the Project\r......Page 110 Conclusion\r......Page 111 Recipe 3: Create a Simple Text Document\r......Page 112 Step 1: Create the DiaryDocument Class in Xcode\r......Page 114 Step 2: Save a Snapshot of the Project\r......Page 117 Step 3: Create the DiaryWindowController Class and Its Nib File in Interface Builder\r......Page 120 Step 4: Add Scrolling Text Views to the Diary Window\r......Page 127 Step 5: Create the VRDocument-Controller Class and a New Menu Item\r......Page 131 Step 6: Add the Diary Document to the Info.plist File\r......Page 138 Step 7: Read and Write the Diary Document's Text Data\r......Page 144 Step 8: Configure the Split View Diary Window\r......Page 156 Step 10: Save and Archive the Project\r......Page 159 Conclusion\r......Page 160 Recipe 4: Add Controls to the Document Window\r......Page 162 Step 1: Add Controls to the Diary Window\r......Page 163 Step 2: Implement the Add Entry Push Button\r......Page 170 Step 3: Implement the Add Tag Push Button\r......Page 183 Step 4: Validate the Add Tag Push Button\r......Page 191 Step 5: Implement and Validate the Navigation Buttons\r......Page 201 Step 6: Implement and Validate the Date Picker\r......Page 203 Step 7: Implement and Validate the Search Field\r......Page 209 Conclusion\r......Page 214 Recipe 5: Configure the Main Menu\r......Page 216 Step 1: Create the VRApplicationController Class\r......Page 217 Step 2: Add a Read Me Menu Item to the Help Menu\r......Page 218 Step 3: Add a Diary Menu to Control the Diary Window\r......Page 223 Step 4: Add a Diary Tag Search Menu Item to the Find Submenu\r......Page 225 Step 5: Add a Recipe Info Menu Item to Open the Recipes Window's Drawer\r......Page 231 Step 6: Build and Run the Application\r......Page 235 Conclusion\r......Page 236 Recipe 6: Control the Document's Behavior\r......Page 238 Step 1: Organize the Project's Code\r......Page 239 Step 2: Limit the Application to a Single Diary Document\r......Page 244 Step 3: Add Error Handling to the Diary Document\r......Page 264 Step 4: Prepare Localizable Strings for Internationalization\r......Page 278 Conclusion\r......Page 280 Recipe 7: Refine the Document's Usability\r......Page 282 Step 1: Set the Minimum and Maximum Sizes of the Document Windows\r......Page 283 Step 2: Set the Initial Position and Size of the Document Windows\r......Page 290 Step 3: Set the Standard Zoom Size of the Document Windows\r......Page 292 Step 4: Autosave the Position and Size of the Document Windows\r......Page 297 Step 5: Autosave the Position of the Divider in the Diary Window\r......Page 305 Step 6: Autosave the Recipes Document's Toolbar Configuration\r......Page 307 Step 7: Autosave the Diary Document's Contents\r......Page 308 Step 8: Back Up the Diary Document\r......Page 320 Step 9: Implement the Revert to Saved Menu Item\r......Page 321 Step 10: Build and Run the Application\r......Page 327 Conclusion\r......Page 328 Step 1: Add a Save As PDF Menu Item\r......Page 330 Step 2: Use Alternating Show Recipe Info and Hide Recipe Info Menu Items\r......Page 336 Step 3: Use a Dynamic Add Tag and Tag All Menu Item\r......Page 339 Step 4: Use a Dynamic Add Tag and Tag All Button\r......Page 343 Step 5: Use Blocks for Notifications\r......Page 353 Step 6: Add Help Tags\r......Page 357 Step 7: Add Accessibility Features\r......Page 360 Step 8: Provide a Default Diary Document Name\r......Page 368 Step 9: Add Support for Sudden Termination\r......Page 373 Step 10: Internationalize the Application's Display Name\r......Page 374 Step 11: Add Application and Document Icons\r......Page 376 Step 12: Enable the Application to Run Under Leopard\r......Page 380 Step 14: Save and Archive the Project\r......Page 387 Conclusion\r......Page 388 Recipe 9: Add Printing Support\r......Page 390 Step 1: Create a Print Panel Accessory View in Interface Builder\r......Page 393 Step 2: Create an Accessory View Controller in Xcode\r......Page 397 Step 3: Add the Accessory View Controller to the Print Panel\r......Page 404 Step 4: Save Custom Print Settings\r......Page 412 Step 5: Create a Print View to Print the Document's Content\r......Page 421 Step 6: Print Custom Headers and Footers\r......Page 438 Step 7: Implement Print Scaling\r......Page 444 Step 8: Build and Run the Application\r......Page 455 Conclusion\r......Page 458 Recipe 10: Add a Preferences Window\r......Page 460 Step 1: Design and Build a Preferences Window in Interface Builder\r......Page 461 Step 2: Create a Preferences Window Controller in Xcode\r......Page 468 Step 3: Configure the General Tab View Item\r......Page 472 Step 4: Configure the Recipes Tab View Item\r......Page 482 Step 5: Configure the Chef's Diary Tab View Item\r......Page 493 Step 7: Save and Archive the Project\r......Page 504 Conclusion\r......Page 505 Recipe 11: Add Apple Help\r......Page 506 Step 1: Implement an HTML-Based Apple Help Bundle for Snow Leopard\r......Page 507 Step 2: Add Topic, Task, and Navigation Pages\r......Page 518 Step 3: Add an AppleScript Link to a Topic Page\r......Page 525 Step 4: Use the HelpViewer help: Protocol\r......Page 526 Step 5: Add Keywords and Abstracts\r......Page 529 Step 6: Add Help Buttons to Alerts, Dialogs, and Panels\r......Page 532 Step 7: Advanced Help Features\r......Page 533 Step 8: Implement a Help Book for Leopard and Earlier\r......Page 534 Conclusion\r......Page 540 Recipe 12: Add AppleScript Support\r......Page 542 Step 1: Create a Terminology Dictionary and Add the Standard Suite\r......Page 543 Step 2: Add the Vermont Recipes Suite and Extend the Application Class With a New Property\r......Page 548 Step 3: Add a Diary Document Class and a Property in the Application to Access It\r......Page 560 Step 4: Add the Text Suite and a Document Text Property\r......Page 565 Step 5: Add a Diary Entry Class and an Element in the Diary Document to Access It\r......Page 568 Step 6: Add Properties to Get and Set Diary Entry Values\r......Page 578 Step 7: Add a Current Diary Entry Property to the Document Class\r......Page 586 Step 8: Support the Make Command for New Diary Entries\r......Page 587 Step 9: Support the Delete Command for Diary Entries\r......Page 596 Step 10: Add a Custom Verb-First Command-Sort\r......Page 597 Step 11: Add Custom Object-First Commands-Encrypt and Decrypt\r......Page 601 Step 12: Move Along\r......Page 603 Step 13: Build and Run the Application\r......Page 604 Conclusion\r......Page 605 Recipe 13: Deploy the Application\r......Page 608 Step 1: Build the Application for Release\r......Page 609 Step 2: Test the Application\r......Page 610 Step 3: Provide Documentation\r......Page 612 Step 4: Provide User Support\r......Page 613 Step 5: Distribute the Application\r......Page 614 Step 6: Promote the Application\r......Page 618 Conclusion\r......Page 619 Section 3: Looking Ahead\r......Page 620 Step 1: Switch to Properties\r......Page 622 Step 2: Switch to Cocoa Bindings\r......Page 626 Step 3: Switch to Garbage Collection\r......Page 632 Conclusion\r......Page 634 A\r......Page 636 C\r......Page 637 D\r......Page 638 G\r......Page 640 I\r......Page 641 K\r......Page 642 N\r......Page 643 P\r......Page 644 R\r......Page 645 T\r......Page 646 V\r......Page 647 Z\r......Page 648 This Book Takes A Practical, No-nonsense, Hands-on, Step-by-step Approach, Walking Students Through The Details Of Building A Cocoa Application From Start To Finish. It Explains In Detail What The Code Is Doing And Why It Works. About Vermont Recipes Xxvii -- Why Objective-c? Xxxii -- Naming Conventions Xxxiii -- Interface Builder And Project Builder Xxxiv -- The Vermont Recipes Application Specification Xxxvi -- Installing The Downloadable Project Files Xxxvii -- Section 1 Building An Application 1 -- Recipe 1 A Multidocument, Multiwindow Application 3 -- Step 1 Create The Project Using Project Builder 7 -- Step 2 Design And Build The Gui Using Interface Builder 12 -- Step 3 Set Up The Project Source Files Using Project Builder 51 -- Step 4 Provide For Data Storage And Retrieval In Property List Format 89 -- Step 5 Provide A Better Way To Save Data, In Xml Format 101 -- Step 6 Implement Undo And Redo 109 -- Step 7 Tinker With Revert 126 -- Step 8 Add Application And Document Icons 133 -- Step 9 Revise The Menu Bar 135 -- Step 10 Debug The Application And Build It For Deployment 136 -- Section 2 User Controls 153 -- Recipe 2 Buttons 155 -- Step 1 Prepare The Project For Recipe 2 156 -- Step 2 Create Checkboxes (switch Buttons) In A Borderless Group Box 163 -- Step 3 Create Checkboxes (switch Buttons) In A Bordered Group Box 192 -- Step 4 Create A Radio Button Cluster 211 -- Step 5 Create A Pop-up Menu Button 223 -- Step 6 Create A Command Pop-down Menu Button 232 -- Step 7 Create Bevel Buttons To Navigate A Tab View 236 -- Recipe 3 Sliders 245 -- Step 1 Create A Simple Slider 246 -- Step 2 Create A Continuous Slider With An Interactive Text Field 260 -- Step 3 Create A Continuous Slider With Push-buttons And A Static Text Field 273 -- Recipe 4 Text Fields 283 -- Step 1 Set Up Standard Text Fields 284 -- Step 2 Set Up The Key View Loop 308 -- Recipe 5 Text Field Extras: Alert Sheets 319 -- Step 1 Create A Complex, Interactive Document-modal Alert Sheet To Deal With An Invalid Text Field Entry 319 -- Step 2 Set Up A Generic Document-modal Sheet To Require An Entry In A Text Field 338 -- Step 3 Prevent Tab View Navigation While An Invalid Text Entry And Sheet Are Pending 344 -- Recipe 6 Text Field Extras: Formatters 349 -- Step 1 Set Up On-the-fly Input Filtering For Integers 350 -- Step 2 Set Up On-the-fly Input Filtering And Formatting For Decimal Values 364 -- Step 3 Create A Complete Custom Formatter For Conventional North American Telephone Numbers 389 -- Recipe 7 Text Field Extras: Undo And Redo 407 -- Step 1 Subclass Nstextfield 410 -- Step 2 Allocate And Initialize A Separate Field Editor 411 -- Step 3 Clear The Undo And Redo Stacks 414 -- Step 4 Suppress Changes To The Document's Change Counter 419 -- Step 5 Enable Undo Registration For Unchanged Fields 421 -- Step 6 Make The Integer Text Field Undoable 423 -- Step 7 Read The Source Files Into The Nib File And Connect Outlets And Actions 423 -- Step 8 Build And Run The Application 424 -- Recipe 8 Text Field Extras: Drag And Drop 425 -- Recipe 9 Forms 437 -- Step 1 Create A Form In Interface Builder 438 -- Step 2 Write The Code For The Form In Project Builder 440 -- Step 3 Read The Source Files Into The Nib File And Connect Outlets And Actions 454 -- Step 4 Add A Custom Formatter To The Fax Form Field, With Alert Sheets 455 -- Step 5 Add Live Undo And Redo Support To The Form 458 -- Step 6 Add Full Drag-and-drop Support To The Form 466 -- Step 7 Build And Run The Application 470 -- Recipe 10 Combo Boxes 471 -- Step 1 Create A Combo Box In Interface Builder 473 -- Step 2 Write The Code For The Combo Box In Project Builder 474 -- Step 3 Create A Data Source For The Combo Box 475 -- Step 4 Add Full Drag-and-drop Support To The Combo Box 480 -- Step 5 Read The Source Files Into The Nib File And Connect The Actions 482 -- Step 6 Build And Run The Application 482 -- Recipe 11 Table Views 485 -- Step 1 Create A Table View And Three Push-buttons In Interface Builder 487 -- Step 2 Write The Basic Code For The Table And Buttons In Project Builder 490 -- Step 3 Create A New Model Class For Records 496 -- Step 4 Add And Remove Records In The Model Object 503 -- Step 5 Assign A Unique Id To Each New Record 506 -- Step 6 Write Action Methods And Supporting Code To Add And Delete Records In The Table 509 -- Step 7 Filter The Array For Display In The Table 516 -- Step 8 Write The Table's Data Source Protocol Methods 520 -- Step 9 Implement A Customizable Combo Box Menu 526 -- Step 10 Apply Data Entry Filtering And Formatting In Table Cells 535 -- Step 11 Implement Drag And Drop For Table Cells 538 -- Step 12 Implement Live Undo And Redo In Table Cells 540 -- Step 13 Add A Keyboard Shortcut For Deleting A Record 545 -- Step 14 Prepare The Table View For The Key View Loop 549 -- Step 15 Read The Source Files Into The Nib File And Connect The Actions 550 -- Step 16 Build And Run The Application 551 -- Section 3 Data Storage 553 -- Recipe 12 Keyed Archiving 555 -- Step 1 Encode And Decode The Antiques Inventory 557 -- Step 2 Archive And Unarchive The Antiques Inventory 565 -- Step 3 Apply Archiving And Unarchiving To The Rest Of The Text Field Model 573 -- Step 4 Apply Archiving And Unarchiving To The Remaining Model Objects 575 -- Step 5 Add Support For Revert, And Undo And Redo 578 -- Step 6 Build And Run The Application 585 -- Section 4 Menus 587 -- Recipe 13 Application Menus 589 -- Step 1 Add An Application Menu And Menu Items Using Interface Builder 589 -- Step 2 Enable And Disable The New Menu Items 592 -- Step 3 Build And Run The Application 595 -- Recipe 14 Contextual Menus 597 -- Step 1 Add A Contextual Menu And Menu Items Using Interface Builder 597 -- Step 2 Enable And Disable The New Contextual Menu Items 600 -- Step 3 Add A Menu Item To The Antiques Menu In The Menu Bar 601 -- Step 4 Build And Run The Application 602 -- Recipe 15 The Dock Menu 603 -- Step 1 Add Static Menu Items To The Dock Menu Using Interface Builder 604 -- Step 2 Add Dynamic Menu Items To The Dock Menu Using Project Builder 606 -- Step 3 Build And Run The Application 612 -- Section 5 Windows 615 -- Recipe 16 Drawers 617 -- Step 1 Add A Button To The Main Document Window To Toggle The Drawer Open And Closed 618 -- Step 2 Add Static Text, A Text View, And A Button To The Drawer 619 -- Step 3 Add A Text-formatting Menu To The Menu Bar 622 -- Step 4 Remove The Find Menu From The Menu Bar 623 -- Step 5 Set Up A Window Controller Category For The Drawer And Its Text View 624 -- Step 6 Set Up A Model Object For The Text Data Represented By The Drawer 631 -- Step 7 Archive And Unarchive The Drawer's Text Data 635 -- Step 8 Read The Source Files Into The Nib File And Connect Outlets 637 -- Step 9 Build And Run The Application 637 -- Recipe 17 Multiple Windows 639 -- Step 1 Redesign The Text-handling Code For The Drawer's Text View 641 -- Step 2 Create A Split-view Window In A Separate Nib File In Interface Builder 652 -- Step 3 Create A Separate Window Controller For The Split-view Window In Project Builder 654 -- Step 4 Code And Connect The Open In Window Button 657 -- Step 5 Coordinate The Three Text Views 661 -- Step 6 Build And Run The Application 665 -- Recipe 18 Alert And Dialog Panels 667 -- Step 1 Create A Freestanding Modal Alert Panel That Doesn't Block Application Processing 670 -- Step 2 Create A Freestanding Dialog Panel For Entry Of User Preference Settings 678 -- Section 6 Additional Application Features 685 -- Recipe 19 User Preferences 687 -- Recipe 20 Online Help 695 -- Step 1 Create A Help Tag Reflecting A View's Current State 698 -- Step 2 Create Context Help For A View 699 -- Step 3 Add Menu Items To The Help Menu To Present A Read-me Document And Turn On Context Help 705 -- Step 4 Implement Html-based Comprehensive Apple Help 709 -- Section 7 Working With Mac Os X 10.2 (jaguar) 717 -- Recipe 21 Ensuring Backward Compatibility For Jaguar Applications 719 -- Step 1 Bypass New Jaguar Methods And Functions By Testing The Operating System Version 721 -- Step 2 Bypass New Jaguar Methods By Testing Their Availability 731 -- Step 3 Bypass New Jaguar Classes By Testing Their Availability 732 -- Step 4 Deal With New Jaguar External Variables 733 -- Step 5 Build The Application For Deployment 735. Bill Cheeseman. Includes Index. Cocoa Recipes for Mac OS X takes a practical, no-nonsense, hands-on, step-by-step approach, walking you through the details of building a Cocoa application from start to finish. It explains in detail what the code is doing and why it works, Cocoa Recipes places a decided emphasis on getting an application to work correctly as quickly as possible. This collection of, do-it-yourself recipes guides you through the process of creating classes and subclasses, objects, outlets, and actions. Cocoa is one of the main object-oriented software development environments for Mac OS X.