Excuse my ignorance, but what is the difference in Xcode between the Deployment Target field under \"Targets\" and the deployment target under \"Project\"?
What happ
UPDATE: As clarified by mr. @Edward, the version at "project" level serves as default, whereas the version at "target" level overrides the default value.
Actually it's written in the Apple docs:
"Target settings override project settings."
The Base SDK is not related to any of this.
Original post:
Looking at the link form Apple docs ... Looks like when you set the version at "target" level you specify the minimum required version that a user can have to run your app.
On the other side, by setting the version at "project" level you specify what SDKs are available to you when you're developing. So if an API is available only to the latest version you get a compiler error notifying you that you have to handle the behaviour for missing API differently (probably using #available
or @available
).
This is how I understand the above image:
The iOS Deployment Target on the Project page is the default for all targets in the project. The iOS Deployment Target on each project is an optional project-level override.
To set a target to inherit from the project, you can't use the "General → Deployment Info" section. Instead, go to "Build Settings → Deployment", and for "iOS Deployment Target" choose "Other..." and enter $(inherited)
.
Target settings override project settings. Project settings are valid for all targets whose settings haven't been overridden.