Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I was here programming in iOS with a class that's available only for iOS 6, and I was wondering: why should I implement my app to handle multiple operating systems when my app will be distributed by Apple through the App Store, and so they could just include/install whatever iOS source needed for my app?

In the old days updates to the operating systems came through CDs, and so it made sense that programmers could not expect everybody to have the latest OS, and that OS updates had to be clumped together into major releases and be few and far between.

But in the age of the internet, and especially on iOS where both the user and the software developers are forced to buy and sell apps through the App Store, shouldn't we just expect the new APIs to be downloaded on the background when installing new apps? and changed to the OS to happen incrementally rather than in major releases?

share|improve this question

closed as not constructive by hotpaw2, Jalayn, thorsten müller, Walter, MainMa Mar 31 '13 at 0:20

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

@the person that downvoted the question: if you think it's a dumb question please answer it so I understand and you get quick rep :-). If it is outside the scope of the site direct me to the right stackexchange site. – Hermione333 Mar 17 '13 at 23:10
I doubt there is a technical explanation why Apple doesn't do this, so I don't know how anyone on this site could explain better than Apple could. Maybe try their site. I did not down vote because I think your question is well formed, but I did vote to close because it is not appropriate for this site. – JeffO Mar 18 '13 at 4:04
@Jeff O Got it. I did not ask on SO because I thought it was not appropriate for that site, and so I asked it here. Skimming the feed on here I see there are good number of downvoted questions, so maybe I am not the only one confused about the scope of this site, and it would do well to improve the FAQ :-) – Hermione333 Mar 18 '13 at 12:20
@Hermione333 the challenge with crafting a 'why' question is to form it in a way that discourages speculation. Much of the policies of corporations can be difficult for someone outside of it to fathom. Even my answer, which tries to stay to technical reasons finds itself in guessing at the business reasons and implications. The only authoritative answer as to this question would be one from an Apple spokesman. Asking the question of "what would the (technical) repercussions of allowing the installation of an application to update the operating system" may have been better received. – user40980 Mar 18 '13 at 14:55
You don't have to implement support in your app for multiple iOS versions. You can just set the Deployment Target of your app to require only the current OS if you wish, and provide your apps to just those users who wish to have any newer APIs potentially up/downgrade their device. – hotpaw2 Mar 21 '13 at 21:18
up vote 9 down vote accepted

Not all changes going forward in an operating system upgrade are forward compatible. For example, from iOS 5 to iOS 6, the method viewDidUnload in the UIViewController was removed. Digging through release notes for things moving from deprecated for a few versions to not there anymore one can find other such examples. This is one small change, but it is a change. If someone has an application that they depend upon for some reason, and they see that it is not compatible with iOS 6, they may not upgrade.

Forcing an upgrade could break existing applications on one's device, which would be a PR nightmare. Consider all the articles on the forced firmware upgrades for the play station.

Not all iPhones are running a 'pure' version of iOS. Some are jailbroken. It isn't illegal to jailbreak a device. However, if a company was to force an os upgrade that isn't compatible with the existing os running it could brick the device. It is one thing if I was to make a change to my device and accidentally bricked it myself. However, if loading a user level application on the device forced a update of the operating system (rather than just crashing because it couldn't find the newest appropriate library) this could cause significant problems.

The law of least astonishment applies here. Loading an new app and having it crash or launch and say "not supported on this version of the operating system" is much less astonishing than loading a new app and having it cause older apps to fail.

share|improve this answer
Also, as developer, I would hate the fact that another application could force an update that would lead to my application being broken. – Mike D Mar 18 '13 at 0:01
I am satisfied with your answer :-). Although I do think that most iOS users are not as technical as Mac users and don't check which apps are compatible with the updates anyway. Having "forced" updates would also mean companies would have to update their code to keep their app in the App Store, which I think would be a good thing. You do make a very good argument with the jailbroken community. – Hermione333 Mar 18 '13 at 0:08
@Hermione333 - and if companies should be constantly forced to update their code, who is going to pay for it? What is a reasonable amount of time to test on a new OS version? Maybe the new apps should suffer a limited client base who don't want or need to update? Soon the shoe will be on the other foot my friend. – JeffO Mar 18 '13 at 4:00
Why would it be a good thing for Apple to be able to control developers not on their payroll? Don't they have more than enough control? – Drake Clarris Mar 18 '13 at 11:55

Some devices, such as the 3rd gen iPod Touch (I have one) do not support iOS 6.

Depending on what you need, there are alternatives. I am working on a project which uses both PSTCollectionView (for collection views on older devices) and WEPopover (for popover capability on non-iPad devices).

share|improve this answer
I understand that Apple does not support new OS releases on relatively old devices; but that is a somewhat artificial restriction. I mean the hardware that can handle a UIScrollview can definitely handle also UICollectionView. So even if Apple wants to keep the main OS changes from older devices, they could support new classes by downloading them onto the device with the app that needs them. I am not whining just wondering why it does not happen :-) – Hermione333 Mar 17 '13 at 23:20
Sure, it's technically possible for Apple to do so. They choose not to. You're free to wonder about why Apple has chosen to do this, but "I wonder why..." questions are not generally a good fit for Stack Exchange. – Greg Hewgill Mar 17 '13 at 23:23
I wanted to know if there was some technical reason why that does not I know that it's probably not the case. – Hermione333 Mar 17 '13 at 23:27
It is unknown whether Apple implements new classes in a manner that is compatible with older OS versions or the older APIs and classes in that OS. Runtimes do change in incompatible ways. – hotpaw2 Mar 21 '13 at 21:02

There are business reasons, which I won't get into, and there are technical reasons. This argument could be applied to all modern operating systems as well.

Consider the App review process; this could make an already (at times) frustrating experience more so. Every application would have to be vetted for specific APIs. Too many false positives might get through, and there would also likely be an equal number of bad rejections.

The next area of concern would be what happens with older APIs that could potentially be overwritten by a forced update. This could lead to perfectly usable applications sunddenly breaking. This would be especially bad in the enterprise market (including the BYOD crowd), where Apple has made significant progress.

share|improve this answer
I don't think it is equally applicable to all operating systems: iOS is the only operating system that I know of where there is only one way to acquire software (without hack that voids the warranty), and that is through the OS maker itself, Apple. Apple with iOS is therefore is in a unique position to be able to ask developers to keep their apps up to date with the newest APIs (they control which apps stay in the App Store, therefore the entire pool of apps on iOS devices), and to know which APIs are required by the apps in the device. – Hermione333 Mar 18 '13 at 0:18

Not the answer you're looking for? Browse other questions tagged or ask your own question.