In this article, I'll discuss how to write iPhone apps from a developer perspective. Meaning, those that have written applications or designed websites.
Developing iPhone applications include two main areas of learning: the Objective-C language along with the iOS framework and provisioning mobile devices. Objective-C is the language used to write against the iOS framework. The iOS framework includes constructs that allow you to communicate with networks, process events within the application, and retrieve data from a database to name a few of its features. There are also subsets of the framework such as Mapkit, Notification Center, and Game Center.
The second area of learning is device provisioning. Provisioning is the process of making the mobile device trusted and copying your application from the computer to the mobile device. Creating trust usually consist of installing certificates on the computer and mobile device.
For those that have never developed on mobile devices, this can certainly be a time consuming area to learn because it is such a tedious process. Device provisioning is tedious because of the various and numerous number of errors one might receive. Lack of documentation on these issues can make provisioning a lengthy endeavor.
The iPhone development environment consists of Xcode. Xcode is an IDE (integrated development environment), designer, debugger, and includes instrumentation for testing performance. Xcode can be integrated with code repository products such as SVN. Xcode is free. However, to submit iPhone applications for sale, you must join the developer program, which costs $ 99 per year.
Apple has provided a large number of tutorials and documentation at their developer site. Additionally, the iPhone developer community is very active. There are a large number of forums for seeking help. As you work through your first few applications and starting running into problems that are taking some time to figure out, it is likely you will find others that have experienced the same issue.
Experiencing problems when learning a new development language and framework is a good thing. It is taking you off of the beat path and allowing you to dig in. This kind of exploration will help sear how particular areas of the language / framework work or should be used. These experiences also add to your toolbox. Next time you come across a particular issue, it will not take as long to resolve. Occasionally, you will begin developing faster and more efficiently in this very new environment.