Sometimes when the steps a customer provides to reproduce a bug seem exactly the same as what you’re doing, you’re just not trying hard enough to find the difference.
A friend of mine on Twitter was asking about references for getting started in iPhone development. I realized I had a lot of references to share, but nothing well organized. This entry (which I’ll probably update as I find new things) will have a running list of things I’ve found useful when getting started into iPhone development.
Cocoa Programming for Mac OS X - iPhone development is done in Objective-C, which is the same language used when developing for the Mac. This is by far the best book to use for learning Obj-C.
Cocoa Design Patterns - Most of the common design patterns from the Gang of Four are applicable for the iPhone and Mac, but there are several others that are very popular within the Cocoa [Touch]/Obj-C sphere. Also includes Obj-C sample code for each of the patterns covered.
The iPhone Developer’s Cookbook - After picking up Obj-C from the above, I just needed some iPhone specific code examples. Erica Sadun has been hacking on the iPhone before it had an official SDK, so her cookbook has been very helpful.
iPhone App Development: The Missing Manual - This will probably be my next iPhone related book. Craig Hockenberry is the developer behind Twitterrific, Frenzic and several other apps. He’s been a very vocal leader in the development community and I have great faith, sight unseen, that his book is going to be very helpful.
furbo.org - Speaking of Craig Hockenberry, his blog is also a great resource. There’s lots of sample code and general thoughts on usability and motivation.
iPhone Dev Center - Apple has some really nice code samples and good documentation.
TouchCode - If you’re doing anything with XML, the TouchXML project is very helpful. The XML API provided on the iPhone is not very robust compared to what’s on the Mac itself. TouchXML mimics the most important features of the Mac API, making it really easy to get started using XML. TouchJSON is a similar concept, but for JSON objects.12
SBJSON - I haven’t used it, but SBJSON is supposed to be another very powerful, but light-weight JSON parser/generator.
iPhone developer:tips - The name’s pretty self-explanatory. There’s a lot of good tips here about various subjects.
Free Time Studios - iPhone game developer in Houston. Nathan has lots of experience using CoreAnimation and OpenGL on the iPhone. Definitely check out his i360|Dev slides and sample code as well as his FTUtils.
Core Data slides - Core Data is one of the best ways to store your application’s data on the iPhone. For those unfamiliar with Core Data, you can think of it like an ORM from other languages or ActiveRecord from Ruby, although that’s a fairly loose comparison. Darren Stokes had a really good presentation at the Houston iPhoneDevCamp and posted his slides and sample code online. I’ve been using Core Data for about a year and still learned something new from Darren.
The Three20 Project - Joe Hewitt was the developer for the official Faceboook app. He pulled out a bunch of views and concepts from the application and released it as an open-source library.
cocos2d - Very nice 2d gaming engine built on top of OpenGL. Has lots of similarities to CoreAnimation.
I’ve heard that the TouchCode libraries might not be working with the iPad SDK. I’m sure this will be fixed, but it’s something to keep in mind. ↩
TouchJSON doesn’t support the full JSON spec, SBJSON should be better. ↩
Apple now owns and controls their own mobile CPUs. There aren’t many companies in the world that can say that. And from what I saw today, Apple doesn’t just own and control a mobile CPU, they own and control the hands-down best mobile CPU in the world.
When I was watching the live blogs of the keynote, my first reaction to the A4 announcement is that this was the biggest thing announced yesterday. I expect by the end of the year every iPhone & iPod Apple sells will have their own silicon.
Like the iPhone, the iPad is really a vessel, a tool, a 1.5-pound sack of potential. It may become many things. It may change an industry or two, or it may not. It may introduce a new category—something between phone and laptop—or it may not. And anyone who claims to know what will happen will wind up looking like a fool.