Where can I find a list of all the effects that will happen based on my app's IPHONEOS_DEPLOYMENT_TARGET setting?
In "App Startup Time: Past Present and Future" at WWDC 2017, Apple told us that "in a future iOS version" there would be additional restrictions that dyld places upon your app, based on its minimum supported OS setting.
I've also seen mentions in various WWDC talks and Xcode patch notes about certain compiler settings & optimizations that are only applied to apps targeting iOS Z or higher, where Z is some version.
However I cannot seem to find a comprehensive list of ALL the ways your app will be treated differently based solely on the minimum support OS setting that you list in your Info.plist.
The reason I ask is because one of the apps I work with has been experiencing crashes when we set the IPHONEOS_DEPLOYMENT_TARGET to 14.0 instead of 13.0, but nothing else is different. So there must be some difference in how our app is being compiled or signed, or what restrictions are placed on it, based solely on the minimum supported OS.
But for the life of me, I cannot find a comprehensive list of the things that come into effect based on the minimum supported OS.
In particular, I need to know all the particular effects that are different between compiling for a minimum supported OS of 13.0 and 14.0, besides the obvious things like:
- now you can use iOS-14-specific APIs without an availability check
- now your app won't run on an iOS 13 device
Besides that, there are obviously some additional differences that come into play. One that I can think of is that when built with Xcode 13 and iOS 15 SDK or later, and a minimum supported OS of 14.0 or later, the following compiler flag is enabled by default:
The new -fobjc-constant-literals flag lets you declare declare global constant literals, and performs optimizations for other literals it supports in Objective-C code. You can use this flag to embed static property list literals (NSDictionary, NSNumber, and NSArray) at compile time, placing them in the CONST section of the binaries. (44920795, 45380392)
However the crashes we're seeing happen even if the app is built with Xcode 12.5, which doesn't support that new flag, so I don't think that it could be related to this compiler flag.
I've also been able to find some places in OpenSource.apple.com in the latest dyld source-code that take the minimum supported OS as a parameter, but I can't tell if it's being used to apply stricter checks to the app or not.
Any help would be appreciated, even if it's just to mention one or two things that you're aware of which take effect based on a minimum supported iOS/iPadOS of 14.0.