How I'm Learning iOS Development

Lately, I've been on a hardcore iOS development learning phase. To be honest, I've been wanting to learn iOS development for a while (probably since I got my first iPhone two years ago). But I either never had the time to sit down and learn something new, or whenever I did try to take time to learn, I'd get totally confused with something and felt like I was stuck. I don't know if it was due to spending too much time on Ruby and vi, that Xcode, Objective-C and Interface Builder totally threw me off my game, but the learning curve initially seemed steep to me.

I finally decided to put my foot down and do whatever it takes it finally get a grasp of iOS development. And the dedication is finally paying off. I finally feel like I'm getting used to the development environment and most of the basics to actually get something done. It's not like I have a million-dollar app I want to develop or anything, but seeing that mobile development is one of the hottest trends out there and will most likely be for the foreseeable future, I want to be a part of that wave while it's still peaking.

I wanted to share some of the material that has been greatly helping me out during this journey. Note that there isn't a lot of material updated with info on iOS 4 or Xcode 4, and although there are minor changes, like slightly different method names, for the most part the material is still very much useful.

Of all the books I've read on iPhone development, this seems to be the one that made it all click in my head. The writing feels a bit on the simplified side, which really made my brain be able to grasp and retain the concepts presented in it. The way the chapters progress is smooth, and doesn't really overwhelm you with a lot of new concepts. I've noticed that a lot of books give you examples with a lot of new stuff that they haven't covered yet, then proceed to say something like "trust us, ignore this for now and we'll explain later". This book doesn't really do that much, besides when it's apparently necessary to hold off.

This book also contains probably the most updated print material I've seen anywhere, as of this writing. If you were only to get a single book on iOS development, I would highly recommend this book above anything else.

One of the most confusing things for me with iPhone development is the concept of view controllers. It was the one thing that tripped me up, despite trying to find as much info about it as possible. Although the previously mentioned book helped me the most to clarify a lot of these concepts, these Peepcode screencasts are also great for understanding how views work on iOS. It took me a couple of viewings of the first two parts (I haven't purchased the most recent screencast) to really understand things like table views and cells and the different types of views available (Tab Bar, Navigation, etc.)

One of the mistakes I made early on in my Ruby career was the fact that I took the time to learn Ruby on Rails, but not the underlying language which is, of course, Ruby. Looking back now, that hindered my progress early on, since I knew the basics, but couldn't really fully understand the real power behind Ruby, like metaprogramming. It limited what I could do. So instead of following that same path again with the Cocoa Touch framework, I decided to take the time to get deeper into its underlying language, Objective-C.

This book is definitely the definitive guide to Objective-C. It covers just about everything in the language - clocking in at almost 600 pages worth of material. While I don't know if Objective-C should be someone's very first programming language, it's actually starts of with basic programming concepts like methods, classes, variables, looping, etc. But it gets deep pretty quickly, covering plenty of Apple's Foundation Framework. It's an excellent reference, and one I keep by my desk at all times.

I was pleasantly surprised to see that Apple's online documentation is really well put-together. It covers everything from basic Objective-C to more specific iOS functionality, like Push Notifications or the iAd Framework. A lot of the basics are available for free, but I believe there's a lot more documentation for users that have registered to their $99-a-year iOS Developer Program.

These have been the top resources I've been using these past couple of weeks to get up to speed with my iOS development. With these resources, I'm getting very close to feeling confident enough to put together a simplistic app, maybe even publish it in the App Store for the hell of it.

If you're curious to want to start iOS development, these books, videos and online documentation will help you a lot. Don't feel overwhelmed by the amount of material out there. Just dive into it! There's a ton of things that iOS devices can do. It's just a matter of digging in and exploring further those parts that interest you, whether it's a simple app with a table view or a full-blown OpenGL ES video game. Happy hacking!