I have been chipping away at Objective-C, Cocoa, CocoaTouch, and MonoTouch for the past few weeks. Using MonoTouch at work has given me a false sense of confidence about my ability to write iPhone applications on the native platform. For a C# developer like myself, working with MonoTouch allows me to continue using a tool and language that I’m familiar with (MonoDevelop is pretty similar to Visual Studio).
That’s all well and good until I try to write an iPhone application in Xcode using Objective-C. Suddenly I’m back in the weeds again, struggling to do things that are second nature when working in C# (ex. working with strings). To combat that horrible feeling of incompetence and ignorance, I have been reading several books about Apple programming. I just finished reading “Learn Objective-C on the Mac” and found it to be very good. In order to understand the motivations behind the Cocoa and CocoaTouch UI frameworks, I am reading “Cocoa Design Patterns” and enjoying it immensely. Last but definitely not least, I recently started focusing specifically on iPhone programming. After evaluating the huge number of iPhone programming books out there, I decided to invest in “iPhone Programming – The Big Nerd Ranch Guide.” It is a very highly rated book, but I’m not far enough into it yet to give my impression.
Obviously I can read as many books as I want, but that won’t make me a competent Apple programmer. The real learning comes from working on apps; debugging in particular. Luckily for me, working on apps is my favorite part!
There is so much to learn that it can be daunting. From a tooling perspective, I need to become familiar with Xcode (the IDE) and Interface Builder (the GUI builder). From a language perspective, I need to learn how to use Objective-C, which entails learning the memory management practices (which is a big topic unto itself!). Let’s not forget that there’s also the UI frameworks: Cocoa (desktop) and CocoaTouch (iPhone/iPad/iPod).
It’s very exciting to have so many cool new things to learn about! I’ll keep you posted…