I just started learning how to develop for the iPhone. After helping to put together an iPhone workshop with my friend Joe Heck, I got really excited about this new platform. I've dabbled in Cocoa and Objective C before, many years ago, and figured it was time to relearn Mac development so I could write my own apps for the iPhone.
Learning how to develop for the iPhone is challenging. There is a huge learning curve. You have to learn a new programming language, Objective C. If you're not already an OO programmer, coming from a language like C# or Java, you have to learn object oriented programming concepts. You have to learn how to do memory management (which for many of us older folks, that means learning how to do it again, but for people coming from Java or PHP, you may be learning it the first time). You have to learn the basics of the Cocoa frameworks, the iPhone SDK and the iTouch Frameworks in depth, and some basic C. You have to learn a whole new IDE - XCode and Interface Builder - and the associated development tools, such as Instruments. You have to learn how to do some basic design so you can create nice icons and graphics for your app. You have to be familiar with the Apple Human Interface Guidelines.
None of these are small tasks individually and together, they are quite daunting. So it's exciting to see there are already almost 50,000 apps in the Apple iPhone store and almost 14,000 developers actively publishing in the store (numbers from an article in Fortune on June 10, 2009). Still, I'm guessing there will be a lot more people wanting to jump on board the iPhone development train, so we'll need lots of good online resources, books, training videos, workshops and conferences to help all those developers new to the Mac development platform get further up that learning curve and past the suck threshold.
I've been slowly working my way through the Stanford iPhone class (I'm on lecture three and homework 2) and a couple of iPhone development books, and using the Apple reference guides where I need to. Even with all these resources, I find myself running into challenging problems all the time as I work on my first real application.
In my next post, I'll dive right into building an application that combines a tab bar controller, a navigation controller and a table view controller. This is a common form for iPhone apps and isn't hard to create, once you know all the tricks to put it together.