I've recently been developing an iPhone application. It's been an interesting experience since, although I've been a Mac user for years, I haven't really developed for a Mac platform in the past. All of my programming in recent years has been for server-based applications, so I haven't really done any UI stuff (outside of HTML/Javascript-based UI's) for a couple of decades. Learning a new programming language (with it's libraries and frameworks) and development environment is (in some ways) like learning to program again. Sure, you aren't learning everything from scratch; however, there are all the little "gotcha's" that you have to find out about and you have to look up documentation a lot more to figure out how to do certain things.
Learning to program in Objective-C was not a big jump. In the past few years, I've been mostly programming in C and Lisp (with a bit of Java and proprietary languages thrown in as well), so picking up Objective-C wasn't a big deal. For anyone who has programmed in C and who has had some exposure to an OO language, Objective-C is pretty easy to pick up. However, learning to program on the iPhone is a bigger jump. The resources that I found most useful were:
- Beginning iPhone Development: Exploring the iPhone SDK: Excellent introduction to developing on the iPhone.
- Sample code from Apple (you'll need an Apple developer account to click through the link): Great for figuring out how to do things.
- The iPhone Developer's Cookbook: Building Applications with the iPhone SDK: The author of this book develops without using Interface Builder (IB). This is extremely useful as most books and example code use IB and it is good to know how to do things without IB as well.
- Learn Objective–C on the Mac: I just read a few chapters of this one and skim it when I need to.
- iPhone in Action: Most useful for illustrating and comparing web-based and SDK-based development approaches for the iPhone. Better as an overview than as a programming tutorial though.