Blog Post

Reading Guide for iPhone App Development

For those of you wanting to learn iPhone development, there are a number of resources available. Besides blogs (like ours) there are a number of books that can help pull things together for new and budding developers.

New Stuff to Learn

There’s been a lot of press lately about Apple development tools and the programming language, which is Objective-C. While folks that come from a C and C++ background feel quite at home with Objective-C, there are various developer groups feeling left out of the iPhone app gold rush. Specifically, I am speaking to the legions of .NET and Flash developers who have spent many years mastering their craft and are now being asked to learn a new set of tools, programming language and SDK.

As someone who went through that transition I thought I would document the books that helped along the way. While I did learn Mac development in a classroom setting, the books I’ll recommend were instrumental to it all making sense. My recommendations are listed in suggested reading order.

The Basics

The first book that can help orient new Mac developers is Learn Objective-C on the Mac by Apress. While the book doesn’t specifically focus on the iPhone SDK it does provide fundamental answers to beginner programming questions. This includes how to program Objective-C properties, methods, classes, variables and OO design. It also introduces important concepts such as NSDictionary and NSPredicate which become useful when learning database development using Core Data.

Build On What You’ve Learned

Once you get your bearings you can build on the fundamentals by reading Beginning iPhone Development by Apress. This book introduces the basic aspects of the iPhone SDK. As you may know, learning Objective-C doesn’t necessarily make you an iPhone expert. You will also need to learn how to apply the iPhone SDK using Objective-C which is the focus of this book.

Create User Interfaces

I’ve heard a lot of people comment about their experience with Interface Builder (IB). Granted, IB may not be what most existing developers are used to, I do find working with it to be fun and different. There’s a lot you can do with IB, but working with XIB files (pronounced “nib”) IBOulets and IBActions can be complex. In the book Cocoa Programming for Mac OS X by Aaron Hillegass, he provides almost all of his code examples in an illustrated step-by-step approach. Readers also get exposed to additional concepts such as Key-Value-Coding, which is used in Mac desktop development.

Fill In the Gaps

At this stage you’ll certainly understand most, if not all of the language syntax and SDK fundamentals. However, you may not understand why some things work they way they do. This may include items such as memory management, synthesizing properties, calling delegates and handling notifications. One of the best books to help fill in the gaps is Head First – iPhone Development by O’Reilly. It provides one of the best introductions to Core Data that I’ve seen. One cruise through this book and you’ll be a happy camper.

Build Something Cool

By now you should have the knowledge to put your development ideas into action. Add to your new found expertise by reading More iPhone Development by Apress. This book skips the preliminaries and gets right into the good stuff such as Core Location, GameKit and the MediaPlayer Framework. I’ve been surprised by how many times I go back to this book as a reference for new and existing projects.

Have a Reference

Finally, the last resource that I recommend is the online reference material provided by Apple. This is not to say that its documentation is not good. On the contrary, it’s a great resource, but almost to a fault. Due to the complexity of its documentation I find it most useful as a reference and not for learning new concepts. I feel many new developers rush to the iPhone Developers Reference documentation as their first information source only to be discouraged when none of it makes sense.


Learning iPhone Development is indeed challenging but is not impossible with the right resources. As you continue to build your skills in app development we’ll be here to help take your ideas from concept to the App Store. In meantime these books should ease the learning curve.

7 Responses to “Reading Guide for iPhone App Development”

  1. “Beginning iPhone Development” by Apress mentioned above has some good sample apps which expose you to the major concepts. It’s better to work through these examples with XCode (I used Kindle for Mac alongside XCode) than to just read the book.

    One of the early samples has some errors in it. I decided this was a feature rather than a bug, since it forces the reader to figure out what to do.

  2. Jason

    You mentioned a “classroom setting” in the post. Can you provide some more specificity? Are there any classes you would recommend online?

  3. I am trying to teach myself Ruby, and then learn Objective-C, and iPhone development.

    Am I better giving up and going straight to objective-C? I love the idea of programming, but don’t have enough time to devote lots of extra time right now.

    I read about these 12-year olds who are designing their own iPhone applications, and I think I should be able to eventually contribute something…

    • Ruby is totally different than the C based languages. Objective-C is not completely object-oriented like Ruby, totally different syntax, header files, memory management, and different way to call methods. Why not just start with Objective-C?

    • Objective-C and Rudy are completely different animals. Ruby is an excellent language and very easy to learn. It’s one of my favorite languages and ruby on rails is an awesome framework.

      However, I would advice you to learn Objective-C. It’s much more difficult and would require more time to learn. However, the mobile apps market is exploding and I suspect will continue to grow for many more years. There will continue to be need for more programmers to fill that space.

      Also once your learned Objective-C, learning Java is going to be much more easier since both languages share many of the same characteristics. You will need to know Java to develop on Android.