Apple development technologies VS version of iOS

Emmanuel Orvain
3 min readJan 2, 2020

When you create an application, you have to choose the minimum deployment target. By selecting this option, you will directly split the Apple device owners in 2 categories : The one who can install your app, and the one who cannot.

iOS deployment target

Which iOS version should I support ?

From this article, we can roughly say that :

  • 50% of the devices are running on the last iOS version.
  • 90% of the devices are running on the 2 last iOS versions.
  • 10% of the devices are running on previous versions.

This figures are a good start to decide the deployment target from a market point of view.

Another source of statistic, but only from the download of a specific app.

Which language : Objective-C or Swift ?

Swift is more recent than Objective-C. Swift is more popular in the developper population than Objective-C, because it’s a newer and a more maintainable language. But, application written in swift can only be installed on devices that runs iOS 7.0 or later. In 2020, we can hope that it represents less than 1% of the devices.

Apple released a new framework, can I use it in my application ?

Well… thats depends on your iOS deployment target. Sometimes, you are in charge of this setting, or it can be someone else. It’s very frustrating when a great framework has juste released, but we cannot use it because of the target version. As instance in 2019, Apple release iOS 13, SwiftUI and Combine, but the 2 frameworks are only available for devices that runs on iOS 13 or later. At this date if you make this technology choice, you just loose 50% of the market.

Here are iOS timeline and the support of some of the main technologies / frameworks of Xcode. Their introduction are linked to a version of iOS.

Main technologies and minimal iOS deployment target
Main technologies and minimal iOS deployment target

Also, you have to keep in mind that frameworks are dynamic. Some features can only be available in some version of iOS. By consequence, you have to increment the target version if you want to use it. Or you can do some macro conditional statements and manage the degraded mode.

As instance, in UIKit :

  • UIKit required iOS 2.0
  • The class NSLayoutConstraint required iOS 6.0
  • The class NSLayoutAnchor required iOS 9.0
  • The safeAreaLayoutGuide property in UIView required iOS 11.0

Conclusion

Selecting the deployment target is an important choice. We must weigh the pros and cons. I hope this article will help you to make the good decision.

If you enjoyed this post, please leave some claps. 👏👏👏

You can clap up to 50 times, so get clicking/tapping! 😉

--

--

Emmanuel Orvain

French iOS / Android experimented developper from Toulouse in south of France. https://occirama.com/scanandfile/