I held off diving into learning C, Objective C, and native iOS development for a long time. There were a number of things that made the task seem daunting, and some carrots that Adobe had dangled in front of us Flash platform developers that made it seem unnecessary at first. In retrospect, it’s a good thing I waited, and furthermore now is the best time for Flash platform developers who haven’t yet gotten into native iOS to dive in headfirst.
The C Monster
The main reason I really didn’t look forward to learning C and Objective C, among all programming languages out there, can be summarized in two words – “memory management”. Well, it seems Apple has updated Xcode and Objective C step by step to make things a lot easier for folks like me who are used to high level programming languages. Memory management is a thing of the past – Objective C handles all that in the background, now. And there are numerous other conveniences Apple has put in, such as automatic property synthesis. I won’t get into all the details here, but if you’ve ever thought about learning native iOS development, now things are easier than ever. While there are free courses from Stanford (and others – just search on iTunes U) available on iTunes University, and the Stanford courses are taught by Apple iOS developers and ex-Apple iOS developers, I actually found the courses on Lynda.com are more concise, geared to the active developer rather than the academic, and get you up to speed a lot faster. Also the content on Lynda.com is a lot more up to date – existing courses are amended as Apple updates Objective C and Xcode (although they still haven’t accounted for automatic property synthesis, but that’s probably because it’s not a big deal and it’s good to know what @synthesize is about so you don’ t freak out when you see it in old code).
The Adobe Siren
For a long time now, Adobe Flash platform has let developers create mobile applications from both Adobe Flash (the authoring tool – Adobe keeps changing the name of every product related to Flash Platform to keep both developers and their customers confused as much as possible) and Apache FlashBuilder. The benefit of this seems obvious – write your code once, and instantly deploy to multiple platforms – iOS, Android, desktop, and web! Wow, what amazing magic! Yes, it sounds great in theory, but there are a lot of problems with it. First of all, to develop your application right, you really need to consider the platform and the specific nuances of the platform, including UI, screen sizes, resolutions, etc. Android itself is a nightmare to develop on, for a number of reasons, including the huge number and variety of devices, market fragmentation and the lack of any standards whatsoever. In fact, many companies prefer to develop their applications on iOS first, and then only come out with Android versions later. Still, I think I would rather stick to Android development using flash platform rather than dealing with native Android development. But on the iOS side of the coin, Adobe’s solution is plagued with issues. First off, because of the whole “no Flash player on iOS device” debacle, Adobe didn’t even start developing the tools for iOS until a year after they started on the Android tools – in other words, the iOS side of the house has lagged far behind, and it has never quite caught up. The iOS emulator that comes with Adobe Apache Flex is nothing short of a joke. In native iOS development, the iPhone emulator works exactly the same as the real device. And since it’s from Apple, the emulator is updated before new product release, whenever the language or Xcode are updated, etc. Since Adobe is a third-party, this is never the case with their emulator.
Also deploying your app to the actual device is also a bit of a tangle from Flex, while in native iOS it’s as easy as a single button click. While Adobe has made efforts to improve the emulator and iOS development in general, I still find it far, far easier to do native iOS development than to try to create an iOS project from Apache Flex.
The Low Hanging Apple
With all the changes and updates Apple has made to Objective C, these days it’s really easy for an ActionScript programmer to pick up Objective C. While Simon Allardice, the instructor of iOS Essentials and Objective-C essential training on lynda.com states “its’ not just a matter of learning new syntax”, actually I found that for the most part, it was just a matter of getting familiar with the syntax. Yes, there are other considerations, but they are pretty minor. If you’re already an expert AS3, Java, Perl, or other high-level language developer, I don’t think it will take you very long to pick up on C, Objective-C and Xcode. The only reasonable excuse left for developing iOS applications using Apache Flex rather than Xcode is that the developer doesn’t have access to a Mac – native iOS development requires that. Still, it’s a lot of headache to go through for not being able or wanting to get a Mac. Now is really a great time to grab that low hanging fruit!