Being An App Developer is my series documenting how I'm going about designing, developing and releasing my first iPhone app. I won't be sharing too many details about the app itself; since it will probably take a while to develop, there's the possiblilty someone will steal ideas if I reveal too much.

There has always been some debate, espcially on the iOS platform, about the number of previous OS versions your app should support. For instance, in October 2011, version 5.0 of iOS was released. Should new apps (newly developed, that is) support just the latest version, 5.0, or should it also have some backwards compatibility with versions 4.x as well?

Matt Gemmell wrote an article last year highlighting some reasons why latest version only. He makes some good points, including the fact that only providing support for the latest version is less hassle, and requires less code.

Re-implementing something from newer standard libraries just to have feature parity on older OS versions is for chumps, and sucks up your time, energy, enthusiasm and your very soul.

Matt GemmellLatest Version

Looking at what iOS 5 provides over iOS 4.3.x, I've made the descision that my app will only support the latest version available at a given time. I don't want to be a "chump" as Matt puts it, and I certainly don't want to waste time.

So, let me be more specific; what advantages does targeting iOS 5 on its own have? Here's a short list:

ARC. ARC, or Automatic Reference Counting, is a feature of the compiler in Xcode that means that memory management (this is technically C development, remember) is handled almost completely without interaction from the developer. Instead of calling release or retain, memory references are kept up to date automatically, simplifying code dramatically. Only devices running iOS 5 can handle ARC in apps.

Storyboards. Before version 5.0, iOS UI development was either done in code, or in an app separate to Xcode called Interface Builder. Every view in your app had to be laid out individually in a separate file, then activated using code. iOS 5 brought Storyboards, which are basically those Interface Builder files on steroids. Instead of a separate file for each view, your entire app's UI is created in one file, making it much easier to see how your app flows between views.

A screenshot of an app's UI created in a Storyboard. Each view of the app is set out and connections are made between them to show where each view leads to.

iCloud. Since iCloud only works properly on iOS 5 devices (iCloud mail and contacts can be set up in iOS 4, but that's about it), targeting iOS 5 only makes integrating iCloud into an app a whole lot easier. It means you as the developer can simply add in iCloud features without worrying about somehow providing the same functionality to older versions using a similar service, or your own server, which could get expensive.

There are a whole load of other things that I could mention about iOS 5, but I think I've talked about it enough already. I'm sure there are a few reasons you might consider supporting old versions, but you have to ask yourself, is it worth the extra effort? Personally, I don't think so.