Resources for getting started with Cocoa
We had a good turnout at the inaugural CocoaHeads meeting in Madison, WI last night (Maurice Cheeks snapped a photo of the event). The general theme was about getting started with Cocoa development on the iPhone. I mentioned some resources for this during the talk, and by request I'd like to list those here.
Screencasts and podcasts
When I first started looking into Cocoa development on the Mac in January 2007, the online resources I relied on most to help me get up to speed were podcasts and screencasts. The screencasts, particularly CocoaCast (listed below), were excellent in that you could watch the developers as they built simple programs and see the results. The podcasts were nice for me in that I couldn't devote any time at work to researching Cocoa, so I'd listen to them on my drive and on after-work walks.
- CocoaCast - A screencast started by Boris Klaydman that walks you through Aaron Hillegass's book (listed below) and eventually gets more technical. This was probably the guide that really caused Cocoa to click for me. I highly encourage anyone who's getting started with Cocoa to watch their episodes from the beginning.
- Late Night Cocoa - An extremely professional audio podcast on Cocoa done by Steve Scott (Scotty). Scotty interviews many of the best Cocoa programmers out there, each spending time on one framework or concept. He has a natural talent for interviews and does a great job in his production of the episodes. He has since expanded upon this show to form the Mac Developer Network, which I highly recommend you become a member of.
- Mac Developer Roundtable - Another podcast by Scotty, where he pulls together groups of Cocoa developers and gets them to argue over things like whether exceptions or NSError are the way to go for error detection in your code.
- Developer Lives - Yet another podcast by Scotty, this time one where he gets prominent Cocoa developers to give their life story. A large part of what makes Cocoa development so much fun is the community. Each one of these developers are friendly, helpful people and it's great to hear the unique stories of how they came to be where they are.
- Mobile Orchard - A relatively new podcast that delves into both the development and business sides of iPhone applications. They've had some interesting guests on the show so far, so it's worth a listen.
There are many places to go online for Cocoa tutorials and sample code (including my blog here), so I'll just list some of my favorites.
- Theocacao - A Cocoa-themed personal blog by Scott Stevenson. He has some nice introductions to new concepts, and many samples of code for topics like Core Animation.
- Cocoa is My Girlfriend - A Cocoa blog with contributions by Marcus Zarra, Fraser Hess, and Matt Long. They cover interesting intermediate-level concepts with code samples and thorough walkthroughs.
- furbo.org - Craig Hockenberry's personal blog, which covers a lot of iPhone-specific topics. Craig, the developer of Twitterrific and Frenzic for the Mac and iPhone, is one of the most well-known iPhone developers. His blog is a must-read for anyone submitting an application to the App Store or doing any sort of iPhone provisioning.
- Cocoa for Scientists (MacResearch) - Drew McCormack has written a great series of tutorials that start you from basic Cocoa principles and lead you all the way up to complex subjects like NSOperation. These are aimed at researchers who are looking to get into Cocoa development, but they are just as useful for laypeople.
- Cocoa with Love - An advanced-level Cocoa blog run by Matt Gallagher. He covers advanced Cocoa topics, such as how to do square roots using NSDecimalNumber. This may not be the greatest resource for someone just getting started with Cocoa, but his posts are fascinating for those wanting to go beyond the basics.
- Stack Overflow - While not a blog, Stack Overflow is still a great online resource. It is a programming-oriented site where anyone can ask questions or give answers. The quality of the questions and answers is impressive, but they are for a wide variety of platforms, so you'll need to filter by tags like "cocoa" or "iphone" to see Cocoa-specific questions.
Honestly, I don't have that many Cocoa-related books on my shelf right now. Of those, there are three that I strongly recommend:
- Cocoa Programming for Mac OS X (3rd Edition) - This should be required reading for anyone doing Cocoa development. Aaron Hillegass is a natural teacher, and he's been doing training courses on Cocoa since the NeXT days. While this focuses on Mac development, the core principles he teaches are applicable to the iPhone and you should be familiar with them when working on that platform.
- Core Animation for Mac OS X and the iPhone: Creating Compelling Dynamic User Interfaces - As I say in my review on Amazon, this book has earned its place on my shelf. Bill Dudney provides one of the few pieces of documentation on Core Animation, an extremely powerful technology at the heart of the iPhone user interface and part of the Mac's since Leopard. I've been doing a lot of Core Animation work lately, and this has been my primary reference.
- The iPhone Developer's Cookbook: Building Applications with the iPhone SDK - While marketed as a good introductory text on development for the iPhone, I'd say that this is better for intermediate- to advanced-level developers. Erica Sadun has done a tremendous amount of work in digging around the internals of Mac OS on the iPhone, and it shows in the behind-the-scenes glimpses she gives in the code within this book. Her code snippets provide interesting solutions to challenges on the iPhone and show how to use some of the less-well-documented elements, but you have to know where to use these snippets (and to avoid using any private API calls she describes).
Hopefully, you'll find these resources to be as useful as I have.