Learning to program the iPhone

4 Sep

Based on the rumors of an upcoming portable ultra-thin 10-inch screen mobile communication device, aka Apple Tablet or iTablet, I decided to learn how to program the iPhone and iPod Touch. My guess is that the supposed Apple Tablet will not only be made from Unicorn tears, but also run an OS based on Cocoa and Objective-C, just as the Macintosh (aka Mac) and the iPhone and iPod Touch do.

Because I am on a tight budget and new devices come out all the time, I decided to make do with the free iPhone developer kit with iPhone simulator first, and only invest in one (or several) device(s) once I have a good idea for an application. So at this moment I’m laying a foundation for possible future development of an application on the iTunes App Store.

To give me a firm grounding in Objective-C, Cocoa and the basics of iPhone programming I’ve bought these three books, based on several recommendations and positive Amazon reviews:

  1. Programming in Objective-C 2.0 (second edition, third printing, March 2009), by Stephen G. Kochan (Pearson Education, 2009)
  2. Cocoa Programming for Mac OS X (third edition), by Aaron Hillegass (Pearson Education, 2008)
  3. Beginning iPhone 3 Development – Exploring the iPhone SDK, by Dave Mark and Jeff LaMarche (Apress, 2009)

Accompanying these print books are these websites, respectively:

  1. Official forum for Programming in Objective-C 2.0 (maintained by the author, Stephen Kochan)
  2. Product page for Big Nerd Ranch books (you can download the solutions to exercises here)
  3. Support forum for the books of the authors (after you’ve registered, you can download the source code through the forum)

I only have had contact with Stephen Kochan (who is also on Twitter), and he is very responsive and supportive. Of course, as always, you have to do as much research on your own as you can before you bother other (very busy) people with your question. Many of the questions you might have are probably already answered in the forum. If not, just register, post your question, and it might be answered in a few hours (or more likely days). Always remember that you don’t have to pay for this service. It is being offered as a free bonus to the book. If you want to learn faster and have more interaction, consider paying for a computer science class in your local area and several thousands of dollars in tuition fees.

As I don’t have that kind of money, I opt for learning by books and experimentation. The beautiful thing is that the tools are basically free, so anyone with a fast Internet connection can learn how to write iPhone applications. Only when you want to publish in the App Store you have to pay a yearly fee of $99 USD. And even if you never write an application for the iPhone, you can still develop applications for Mac OS X, because you’ll need basically very similar skill sets.

I won’t be bothering you with my studies, but if I have something important to tell, I will let you know via this blog, like I did with this post.

I already had some basic knowledge of computer programming. If you are completely new to computer programming, I recommend learning that first, for instance with the book How To Think Like a Computer Scientist. I know from personal experience with a previous version of this book, that it will ground you firmly in the principles of computer programming. It uses Python as the programming language, which many recommend as the first programming language for adults.

Of course, if you’re on a really, really tight budget, you could try to only use what Apple has to offer on their developer.apple.com website. However, I don’t recommend it, because Apple assumes that everyone interested in that site is at least fluent in the C language and has some years of experience in writing working applications. In short, what Apple offers on their developer website is a reference for experienced programmers, either in C++, Java or just plain C, who want to expand their expertise into Objective-C and Cocoa.

That is all.

Advertisements
%d bloggers like this: