Wednesday, September 8, 2010

Learning to program the iPhone

Over the last year or so I've spent more than 300 hours learning to program the iPhone. I guess I haven't studied a topic so thoroughly since my university days. Or.. maybe even before that. Anyhow, this is how I went about becoming an iPhone programmer.


As always, Stack Overflow was my friend. My primary language is Java so I searched for "learn iphone java" and found this question:

What's the best way of learning iPhone programming when coming from Java?

Then I used the top few answers as my guide:
  1. I read The Objective-C Programming Language.
  2. I watched all the lectures from CS 193P.
  3. I payed the $99 to join the developer program.
  4. I got the Hillegass book and worked my way through it.
  5. I got the Orange book and coded my way through it.
Aaron Hillegass writes "Objective-C is a simple and elegant extension to C, and mastering it will take about two hours if you already know C and an object-oriented language, such as Java or C++".


I've worked 15 years as a C++/Delphi/Java programmer so I didn't exactly start from scratch, but there is still a lot more to Objective-C than that. Just begin with memory management...

Cocoa Programming for Mac OS X by Aaron Hillegass is great book. Before each new programming exercise there is a description of what is going to be made. If one feels adventurous one could just close the book and go ahead and do it. The book is there to help you should you need it. Completing every chapter is however not necessary. Skip the parts that are relevant only for OSX.

Beginning iPhone 3 Development - Exploring the iPhone SDK by Dave Mark and Jeff LaMarche is also very good. It does however tend to be buggy towards the end, in both code samples and text. It seems they rushed the SDK 3 edition to print.

For every paper book I read it gets more mysterious why there is no wiki version of it. With a wiki there would be no errata. That alone is reason enough to move away from paper.


As more than one Java programmer has noticed, Xcode aint IntelliJ. But it works, and version 4 seems to be a step in the right direction (but I have yet to try it out).

Suggesting new and enhanced features on feels like throwing your ideas into a black hole. Instead of doing that I've added my feature requests to Even if Apple doesn't care, at least I can get some positive feedback from other developers.

In the process of penetrating the jungle of beta testing I have become the number one world authority on iPhone beta testing - at least if Google gets to decide. ;-)


iPhone is a fantastic platform that brings back the fun from when I took my first steps with Basic and C64 assembler. My plan is to make educational games and use my children as beta testers (there you go - I am the authority of beta testing). If you're gonna get addicted anyway, why not get addicted to learning?

No comments: