This series is a story of a C# developer working on an iPhone project. If you happen to share the experience let’s begin the journey by choosing learning resources.
Apple Developer Connection is Apple’s counterpart to MSDN. Similar to MSDN library, ADC maintains extensive reference library to help developers get up the speed on all aspects of the platform development - design and architecture documents, framework guidelines, API documentation, sample code, etc. Much of the documentation is installed with iPhone SDK, and you can access it from Xcode Help menu. You can also subscribe to reference library RSS feed to keep up with frequently updated content.
The core reference library suggests following titles as required reading:
- iPhone Application Programming Guide (previously titled iPhone OS Programming Guide)
- iPhone Development Guide
- iPhone Human Interface Guidelines
I recommend to first learn Objective-C, the language Mac OS X and iPhone application are developed with. Learning the language first will make the above guides much easier to digest, and you’ll be better equipped to follow many sample applications that come with reference library. There’s a gentle introduction to Objective-C on ADC site, with links to more detailed language guides. In following posts I will explore some differences between C# and Objective-C in terms of design and terminology. Although the iPhone SDK installs XCode IDE, I recommend that you begin with your favorite text editor, and compile the excercises using gcc from the terminal. This may slow you down a little, but you’ll get your fingers used to a rather different syntax, and typing code manually will allow you to contemplate the design and various APIs. Subsequent switch to XCode’s facilities will enhance your productivity without shielding you from what’s going on under the hood.
Once familiar with basics, read through Cocoa framework guides:
This may be a good time to brush up on design patterns; pay particular attention to containment/delegation and MVC. Cocoa application development is very different from Windows - double-clicking on a button and typing away code into a UI component will no longer cut it.