Xcode 3 Unleashed – Links
Xcode 3 Unleashed is thorough, but it isn’t comprehensive. Xcode is too large and subtle a system to cover completely in one book, and Apple constantly updates it. Further, your needs as a Mac programmer go beyond simply using the tools. This page, derived from Appendix C, “Other Resources,” is a brief reference to resources you can use to go further and keep current.
Books
- Step into Xcode: Mac OS X Development
(by Fritz Anderson; Addison-Wesley, 2006). This is the first edition of Xcode 3 Unleashed. It is still useful if you are using some version of Xcode 2.
- Beginning Xcode (Programmer to Programmer)
(by James Bucanek; Wrox, 2006). A fine book that covers Xcode 2.
- Cocoa Design Patterns
(by Eric M. Buck; Addison-Wesley, 2008). Erik has many years’ insight into Cocoa, and this book has been much anticipated.
- The Mac Xcode 3 Book
(by Michael Cohen and Dennis Cohen; Wiley, 2008). I'm sorry I don't know much about this book, but I want this list to be complete.
- Version Control with Subversion
, also known as The Subversion Book (by Ben Collins-Sussman, Brian Fitzpatrick, and C. Michael Pilato). Revised periodically and available at http://svnbook.red-bean.com/.
- Advanced Mac OS X Programming
(by Mark Dalrymple and Aaron Hillegass; Nerd Ranch, 2005). This is the companion to Aaron Hillegass’s classic Cocoa Programming for Mac OS X.
- Objective-C Pocket Reference
(by Andrew Duncan; O’Reilly, 2002). This reference guide goes back a few years, but use it for the essentials of Objective-C (except for Obj-C 2.0), and you won’t go far wrong.
- Cocoa Programming for Mac OS X, Third Edition
(by Aaron Hillegass; Addison-Wesley, 2008). Probably most Cocoa programmers today started with Aaron’s outstanding book. His Mac OS X and UNIX training company, Big Nerd Ranch, can be found at http://bignerdranch.com. There's also a version available for the Amazon Kindle.
- Programming in Objective-C 2.0
(by Stephen Kochan, Addison-Wesley, 2008) A guide to the latest iteration of the Objective-C programming language, this frequently-used book is coming out in November 2008.
- Beginning Mac OS X Programming
(by Michael Trent and Drew McCormack; Wrox, 2005). Another book I don't know anything about, other that what the Amazon.com page says about it.
From the Xcode Documentation Window
Xcode changes, and Apple keeps up with the changes in the documentation sets it supplies. The Documentation window is your best source for reference material.
These documents can be found in the Apple-supplied list of bookmarks in Xcode’s Documentation window, or by doing a full-text search for their titles. Release notes are particularly important because they cover developments that might not have gotten into the main documentation.
- Xcode 3.0 Release Notes
- Interface Builder 3.0 Release Notes
- Instruments User Guide
- Xcode User Default Reference
And, of course, there is the Xcode Workspace Guide, available as the first item in the Xcode Help menu.
Not in the Documentation window, but essential, is the Shark User Guide at /Developer/Documentation/CHUD/Shark/SharkUserGuide.pdf (or select Help > Shark Help while in Shark).
Mailing Lists
Apple hosts dozens of lists on all aspects of developing for Mac OS X. You can find the full roster at http://www.lists.apple.com/mailman/listinfo. Remember that like all technical mailing lists, these are restricted to questions and solutions for specific problems. Apple engineers read these lists in their spare time, and they are not required to answer postings; they cannot accept bug reports or feature requests. Take these to http://bugreport.apple.com/.
These four lists will probably be the most help to you:
xcode-userscovers Xcode and the other Apple developer tools (except Shark and the CHUD tools, which are the province of the perfoptimization-dev list). http://www.lists.apple.com/mailman/listinfo/xcode-users/cocoa-devis for questions about the Cocoa frameworks. This list sees moderately-heavy traffic. http://www.lists.apple.com/mailman/listinfo/cocoa-dev/carbon-devhandles questions about the Carbon framework. Sadly, its traffic is becoming lighter and lighter. http://www.lists.apple.com/mailman/listinfo/carbon-dev/macosx-devis a list hosted by the Omni Group (makers of OmniWeb, OmniOutliner, and OmniGraffle) to support Mac OS X development, regardless of technology. It is fully as useful as the Apple lists. http://www.omnigroup.com/mailman/listinfo/macosx-dev
Usenet
If you prefer working through Usenet, you’ll want to subscribe to the comp.sys.mac.programmer.* groups, particularly the following:
- comp.sys.mac.programmer
- comp.sys.mac.programmer.help
- comp.sys.mac.programmer.misc
- comp.sys.mac.programmer.tools
- comp.lang.objective-c
Sites and Logs
- The first place on the Web to go is http://developer.apple.com/, the site for the Apple Developer Connection. It has everything you’ll find in Xcode documentation packages, plus more articles, downloadable examples, business resources, and screencasts. One strategy for getting official information from Apple is to do a Google search restricted to
site:developer.apple.com. - If you find a bug in Apple software, or need a feature, go to http://bugreport.apple.com. (You’ll need an ADC membership, but you got one of those at the beginning of this book, right?) Be sure to file a complete report (Apple has guidelines for you), and if you’re looking for a new feature, be sure to make a concrete case for how it will improve your product or workflow. http://developer.apple.com/faq/bugreporting.html will bring you up-to-speed on the details.
- http://www.cocoabuilder.com/. The lists.apple.com website carries archives of all Apple mailing lists, but for
xcode-users,cocoa-dev, and Omni Group’smacosx-dev, CocoaBuilder is the way to go. One crucial advantage is that it can sort search results by date or relevancy; the Apple site can’t. - http://cocoadevcentral.com/ is an indispensable reference for tutorials and web logs on Cocoa programming.
- http://www.cocoadev.com/ is a wiki encompassing tutorials, references, and links to communities.
- http://www.friday.com/bbum/category/science/technology/apple/mac-os-x/ is the Mac OS X portion of Apple engineer Bill Bumgarner’s blog, providing accessible insights on Apple technologies, especially Objective-C.
- Dave Dribin has an information-packed and frequently updated blog at http://www.dribin.org/dave/blog/.
- Jonathan Rentzsch’s Red Shed blog, http://rentzsch.com/topics/, covers all aspects of coding (and being a coder) on Mac OS X. Wolf pioneered code injection into Mac processes, and authored the definitive screencast on how to embed application frameworks.
- http://www.wilshipley.com/blog/labels/code.html is the coding portion of Wil Shipley’s web log. You should especially read his “Pimp My Code” series, critical reviews of coding practices based on a deep knowledge of Cocoa design.
- Scott Stevenson’s active blog on Mac development can be found at http://theocacao.com/.
- Finally, to follow Cocoa-related activity throughout the web, check out CocoaCheerleaders, an aggregator for websites, blogs, podcasts, mailing lists, sample code, and even books. http://www.cocoacheerleaders.com/.
Face to Face
- CocoaHeads, http://cocoaheads.org/, is an international user group for Cocoa programmers. They meet every month in more than 20 cities worldwide.
- NSCoder Night, http://nscodernight.com/, is a less-formal user group, where Cocoa programmers gather as often as weekly in bars and coffee shops to share experiences and code. The site mentions meetings in 11 cities around the world, and organizing one of your own should be easy.
Text Editors
No one editor (including Xcode) is best for every purpose. A committed Mac programmer will probably use one or more of these editors, too:
- BBEdit, from Bare Bones Software, is particularly good with very large files and HTML. Version 9.0, with many improvements, has just come out. http://www.barebones.com/products/bbedit/
emacsandviare supplied with every standard installation of Mac OS X. If you have any background in the UNIX command line, you probably know how to use one of these, and have nothing but contempt for the other.- SubEthaEdit is a clean editor that permits workgroups to work on a file simultaneously, with all participants able to contribute and see each others’ changes in real time. Syntax coloring is available for all commonly-used languages. http://www.codingmonkeys.de/
- TextMate, from MacroMates, is a text editor with a huge capacity for automation and customization. Syntax coloring and powerful keyboard shortcuts are available for dozens of languages and applications. http://macromates.com/
- Bare Bones provides an extremely capable “light” version of BBEdit, TextWrangler, free of charge. It includes syntax coloring for most commonly-used languages, and its ability to save files to servers via SFTP makes it ideal for students who want to submit programming assignments for class. http://www.barebones.com/products/textwrangler/
Tools
There are many supplemental tools available to Mac OS X programmers. I've found two of them particularly useful.
- AppKiDo, by Andy Lee, provides a concise listing of classes and methods in Cocoa and other Apple frameworks. As a reference, it is much handier than Xcode's Documentation window or the Class Browser. It works by parsing Apple's docsets, and their evolution has been a challenge, but a new version that keeps up with them will be out soon.
- Accessorizer, by Kevin Callahan, addresses the drudgery of writing accessor methods and other property-related code. Memory management and Core Data notification require housekeeping code that is easy to get wrong. Pass Accessorizer the names and types of your properties (it can parse class declarations), and it will return correct code to access them. It even handles the devilishly-subtle collection accessors.
A version that handles all the details of Objective-C 2.0 accessors is due out shortly. Accessorizer is paid software, but worth it.