Table of Contents
(NOTE: Each chapter concludes with a Summary.)
Introduction.
I. OVERVIEW.
1. Cocoa and Mac OS X.
Understanding When to Use Cocoa. Understanding Cocoa's Role in Mac
OS X. What You Need to Use Cocoa. What's Included in Cocoa.
2.
Cocoa Language Options.
Object Orientation. Java. Objective-C. Other Languages. Choosing a
Language for Use with Cocoa. The Use of Objective-C in This
Book.
3. Using Apple's Developer Tools.
Obtaining Apple's Developer Tools. Project Builder. Interface
Builder. Frameworks. Samples. Terminal. Other Tools.
4.
Objective-C.
Why Learn Objective-C? Additions to C. Apple's Extensions. The
NSObject Base Class. Runtime Functions. Objective-C++.
5. Cocoa
Conventions.
Naming. Initializers. Managing Memory. Accessors. Using Memory
Zones. Encoding and Decoding.
6. Cocoa Design Patterns.
Understanding Design Patterns. A Catalog of Cocoa Design Patterns.
II. THE COCOA FRAMEWORKS.
7. Foundation Framework Overview.
Mutability. Class Clusters. Typed Storage. Collections. Property
Lists. Run Loops and Timers. Support Types. String Processing.
Bundles. File System Access. Defaults System. Notifications.
Related Core Foundation.
8. The Application Kit Framework
Overview.
Events and the Run Loop. Responders. NSApplication Overview.
NSWindow Overview. NSView Overview. Delegates. Target-Action
Paradigm. Archived Objects and Nibs. NSWindowController Overview.
Multidocument Applications. Undo and Redo. Menu Validation. Spell
Checking.
9. Applications, Windows, and Screens.
The New Image Viewer. Working with NSWindow. Working with
NSApplication. Modal Loops. Working with Sheets. Working with
Drawers. Working with Screens. Working with Panels.
10. Views and
Controls.
Controls. Simple Views and Controls. Container Views and Controls.
Compound Controls.
11. The Cocoa Text System.
Using the High-Level Text Classes. The Text System Architecture.
Managing Fonts. Text Input.
12. Custom Views and Graphics Part
I.
The Quartz Graphics Model. Quartz Graphics Via the Application Kit.
Using the NSBezierPath Class. Modifying Drawing.
13. Custom Views
and Graphics Part II.
Using NSGraphicsContext. Coordinate System Transformations. Drawing
Points and Rectangles. Optimizing Drawing.
14. Custom Views and
Graphics Part III.
Images and Bitmaps. Drawing Text.
15. Events and Cursors.
Event Handling in Custom NSView Subclasses. Managing Cursors.
16.
Menus.
Standard Menu Layouts. NSMenu Class. NSMenuItem Class. Menu
Validation. Contextual Menus. Dock Menus. Deprecated
Functionality.
17. Color.
NSColor Class. Color Wells. Color Panels. Customizing the Color
Panel. NSColorList Class.
18. Advanced Views and
Controls.
NSTableView, NSOutlineView, and NSBrowser Concepts. Table Views.
Outline Views. Browsers. Combo Boxes. Custom Controls. Toolbars.
Status Bars. NSQuickDrawView Class.
19. Using
Pasteboards.
Pasteboard Concepts. Implementing Cut, Copy, and Paste.
Implementing Drag and Drop. Implementing Services.
20. Adding
Online Help.
Apple Help. ToolTips. Context-Sensitive Help (NSHelpManager).
21.
Multimedia.
Sound. QuickTime. 3D Graphics.
22. Integrating with the Operating
System.
Getting System Information. Authentication and Security.
Communicating with the Workspace.
23. Networking.
NSURL and NSURLHandle. Email Messages. Directory Services.
Interapplication Programming.
24. Subprocesses and
Threads.
Choosing Between Subprocesses and Threads. Using the NSTask Class.
Using the NSThread Class. Locking. Threading Issues.
25.
Printing.
Basic Printing. Overview of the Printing Classes. NSView's Printing
Support. Printing and Pagination Example. Printing in
NSDocument-Based Applications.
III. COCOA TECHNIQUES.
26. Application Requirements, Design, and Documentation.
Designing an Application with Requirements. Designing
TransparentTetris. Implementing the Design. Using AutoDoc.
27.
Creating Custom Frameworks.
Creating and Using a Framework. Header Files. Providing Backward
Compatibility. Debugging Frameworks.
28. Distributing
Applications.
Package Directories. Using Disk Images. Application Installation.
IV. APPENDIXES.
Appendix A. Unleashing the Objective-C Runtime.
Objective-C Objects. Messaging with IMPs and Selectors. Common
Runtime Functions. Forwarding, Distributed Objects, and Proxies.
Examples.
Appendix B. Optimizing and Finding Memory
Leaks.
Optimizing Applications. Finding Memory Leaks.
Appendix C.
Finding Third-Party Resources.
Apple-Provided Documentation. Example Code. Web Sites. Mailing
Lists.
Appendix D. Cocoa Additions in Mac OS X Version
10.2.
Quartz Extreme. Handwriting Recognition. Address Book and vCard.
Universal Access. Updated Tools. Framework
Enhancements.
Index.Promotional Information
Cocoa Programming is a comprehensive work that starts as a
fast-paced introduction to the OS architecture and the Cocoa
language for those programmers new to the environment. The more
advanced sections of the book will show the reader how to create
Cocoa applications using Objective-C, to modify the views,
integrate multimedia, and access networks. The final sections of
the book explain how to extend system applications and development
tools in order to create your own frameworks.
About the Author
Erik M. Buck is president of EMB & Associates, Inc.,
which specializes in commercial avionics and entertainment software
development. He has developed industry-leading applications using
the technology that evolved in Cocoa since 1989. Buck is a frequent
contributor to technical mailing lists and has written many
articles for the premier Cocoa developer resource on the net,
www.stepwise.com.
Donald A. Yacktman has been using Cocoa and its
predecessor technologies, OpenStep and NextStep, professionally
since 1991. He is currently the vice president of Development at
illumineX, and independent software vendor of Cocoa-based Mac OS X
software and a WebObjects consulting firm. Yacktman is a member of
the Stepwise editorial staff and the principal contributor to the
MiscKit, a premier source of information and reusable software for
the OpenStep and Cocoa communities. Yacktman has been programming
professionally since 1981.
Scott Anguish started developing for the Macintosh in
1984. Upon seeing the NeXT development environment in 1992 he was
hooked on the possibilities of a unified imaging model and a pure
object-oriented system. In 1994, after several years of NeXT
development, he created Stepwise, a portal for information related
to NeXT technologies. Today, Stepwise serves as a hub for Apple's
Mac OS X technology platform, as well as Cocoa and WebObjects
development. Anguish uses Cocoa and WebObjects to build better
technology for higher education at the Center for Educational
Technology in Middlebury College.