Where to Start: Learning Objective C and iOS Development

I’ve developed using C#, SQL, HTML and VB.NET for over 10 years, but when I decided to learn Objective C in 2012 I had hard time finding good resources. The biggest problem wasn’t theory – there’s plenty of it around – it was learning the ins and outs of using Xcode and understanding details like simple debugging, threading, etc. (no worries, threading is mostly child’s play in iOS and every real app uses it; you should never access database or web service on the main UI thread to prevent UI lag, unless you’re Android hehehe *poke*). Even being a senior developer in Microsoft world, I couldn’t figure out many small but important details that would let me develop on my own, such as what IBOutlet and IBAction keywords mean and why they’re required at all. The best way to learn is through practice and it was hard to practice Xcode without knowing theory, and you couldn’t practice theory without knowing Xcode…

Thankfully, I found a way out of that loop. The steps below are for people who already know how to program in at least one language; if you’re an absolute beginner with programming, please see the end of this post. I also assume you already bought a Mac and an iDevice (iPhone 4 or higher (best), iPod Touch, or iPad), have the latest iTunes and Xcode installed (Xcode is free in Mac App Store), and have registered as an Apple Developer ($99/year) at http://developer.apple.com.

1. To start, get iOS Apprentice Series from raywenderlich.com. It is simply an amazing collection of tutorials for a beginner and it can be used as a reference guide when you forget how to do a specific task. Raywenderlich.com offers a piece of the series for free, so you can try before you buy. The cost is $54 for 500+ pages of hands-on tutorials that start from the simplest, one-screen app to an advanced, multi-screen app that makes web service calls, changes how it looks in landscape vs portrait, and is both localized and Universal (iPhone + iPad). You will learn how to setup certificates and test your apps on your own/friend’s devices and even how to publish an app to the App Store for sale. The tutorials start with simple concepts, but ramp up quickly. You break the infinite loop I mentioned above by doing a little theory, then a little practice, then some Xcode explanation, then back to theory, etc.

They don’t just give you code and then tell you to run the app – they explain why every line was written and why every new keyword was introduced. After you’re done with the Apprentice Series, you’ll have developed FOUR different apps from scratch to finish. This is seriously amazing quality stuff that has you learn quicker  than any book I’ve ever read on programming. It should take you 2 months or so to get through the 4 tutorials, less if you can study through them full-time. Tip: don’t worry about iPhone 5 screen size support – the tutorials didn’t include it as of the date of this post, Jan 4, 2013. You’ll learn that later.

2a. Now that you have the basics down, I recommend buying their iOS 5 and 6 by Tutorials bundle – that’s $77 for 2300+ pages of tutorials. This will last you months. They will explain all the new features in iOS 5 and 6 such as iCloud, Passbook, and UICollectionView. Get this bundle, it’s worth every penny.

2b. Take the free iPad and iPhone Application Development (Winter 2013) iTunes U course from Stanford. It’s the same class they actually teach at Stanford, for free. With homework, handouts, and everything. Yes, that’s insane. By the end of the course you’ll have a fully functioning card game app and a firm understanding of how iOS development works. They literally captured video of the class being taught in Stanford (you can hear students in the background when they ask questions) and you get it for free. Stanford. For nothing. It’s mind-blowing. The instructor even released a free iBook that encapsulates the class! Free. Seriously, make sure to send him a thank you note.

I will update with more as I find more resources. There are plenty of free tutorials on RayWenderlich.com also, when you have more specific needs such as how to implement feature X, but I haven’t gotten to those yet. And no, I am not affiliated with that site in any way – it’s just the best beginner resource I found, and I searched for months.

PS: Absolute beginners – you need to learn general programming theory first. Try taking the free Programming Methodology course from Stanford (via iTunes U), followed by their Programming Abstractions course. Then you can probably go to step 1 above.