Today marks the day when I started to understand the basics of what iPhone app development involves.
Firstly, you need the proper tools. This means a Mac and an iPhone. You must register as a developer with Apple, and then install XCode, the IDE Apple provides for Cocoa development. Cocoa is the highest-level framework (i.e. library of code) you use to develop apps for both iPhone and regular Macs. Cocoa applications are programmed in Objective C, which is a superset of C (meaning it includes everything C includes, and more). The version of Cocoa you use for iPhone apps is called Cocoa Touch. So when you say you are building an iPhone application, you are building a Cocoa Touch application for iPhone written in Objective C.
Given that I don’t know anything about C programming (except having written some AI algorithms in it the first year of undergrad), Objective C is a very foreign language to me. However, I am getting used to the basic rules of syntax. All in all, it’s not so shocking, just time-consuming to learn. Everything is very object oriented (hence the objective in the name), and while it all is easily comprehended on a conceptual level, it’s how the various facets of the language are used in practice that is difficult to grasp. That’s not so much a difficulty with the language as it is a difficulty with the Cocoa framework.
From what I’ve gathered, the flow of the application is as follows. A user clicks to launch an app. The app’s Main function launches the main thread that gets the ball rolling. This Main function unarchives a NIB file, which is basically an archived copy of a preset, frozen, state which the app should resume. The NIB file passes control to the application Delegate. The Delegate waits for the app to finish loading, and then calls up a View Controller, which loads up a View and inserts it into the Window. The View is what has all the interface elements and things that you actually see on the screen. Once the View is showing on the screen, it knows to respond to various user actions, like clicks and drags. These user actions are associated with various methods in the View Controller file.
Make sense?