3 Answers
3

Yes. Pick your minimum version of iOS and code for it. It will run on any later version of iOS. If you develop an iPhone app, it will run in a compatibility mode on the iPad. Or you can write a universal app that includes screens for iPhone and iPad. (If you develop an iPad only app, it won't run on the iPhone.)

Why you should target iOS 5

There's very little reason not to write for iOS 5.0 and later. Every iPhone since the 3GS can be upgraded to iOS 5.

Also, another great article on this is iOS Ebb and Flow. The Android stuff probably won't tell you anything you don't know, but look at the iPhone numbers (which is several months old now), which he compares to. That says that across multiple developers' apps iOS 5 had captured 76% of all iOS users by March 1, 2012.

And if you target anything older, you'll not only have to avoid using newer features (storyboards, the full version of Automatic Reference Counting) but you'll have a much harder time finding devices to test on. It isn't enough to target iOS 4, test on iOS 5, and declare it'll work on iOS 4. It probably won't without some fixes.

You'll also get to target only the armv7 CPU architecture introduced with the 3GS. Apple's had problems with their code generation for armv6 lately. While I'm pretty sure they're trying, and I don't mean to slight those efforts, it's isn't like they're still shipping devices with armv6. So it's obvious that they're going to spend less effort on armv6 going forward.

The newest iPhone that can't run iOS 5 was discontinued in June 2010. Apple hasn't released a software update to it since November 2010. It not only doesn't run iOS 5, but doesn't run the latest version of iOS 4. Even if a person bought that phone on its last days on a two year contract, that contract will be up before you finish your app.

You should decide which iOS version meets your feature set (probably 4.0+) and implement based on that, that way you support as many iOS versions as possible... Thats what i would do, but then again there are some features that make UI stuff more manageable through IB (such as sieges) that you might want to use, so then you are stuck with 5.0+ since they are only available in 5.0..

Can I develop the app for one version and have it to work in all other
versions ?

Answer is, if you develop for say 4.0, then most likely your code will work with everything after 4.0, so which versions it works with depends on the lowest version you are targeting

The short quick answer is to develop for the device you own and can efficiently test with.

The correct one would be to develop for the IOS 5 and later, apart from all the enhancements it offers in terms of designing and coding, it is also available for phones as far back as the 3gs (that pretty prehistoric in terms of smart phones).