When I open a project in Xcode 9 (or previous versions) and check the File Inspector, there's a section called Project Document, with a combo box named Project Format.
The available options (in Xcode 9) are Xcode 3.1-compatible
, Xcode 3.2-compatible
, Xcode 6.3-compatible
, and Xcode 8.0-compatible
:
What are the differences between those formats?
-- UPDATE HISTORY (as of 20 May 2019) --
I originally asked this question when Xcode 6.4 was around.
Xcode 6.4's list included Xcode 3.1-compatible
, Xcode 3.2-compatible
and Xcode 6.3-compatible
, and defaulted to Xcode 3.2-compatible
.
Xcode 7 didn't introduce any changes.
Xcode 8 added an Xcode 8.0-compatible
item.
Xcode 9 changed the default for new projects to Xcode 8.0-compatible
. (8 Oct 2017)
Xcode 10.2 added Xcode 9.3-compatible
, Xcode 10.0-compatible
(May 2019)
The Xcode project file is an old-style plist (Next style) based on braces to delimit the hierarchy. The file begins with an explicit encoding information, usually the UTF-8 one. This means that the file must not bear a BOM (Byte Ordering Mark) at its start or the parsing will fail.
It's highly unlikely that the project format has any bearing on code completion, but if you really want to change it, select the project itself in the file navigator and open the right-side utility pane. In the first tab is the project format drop down.
If you want to configure the Xcode-compatible project settings in Xcode, select File | Open Project in Xcode from the main menu and configure the settings there. AppCode will sync the modifications to the settings automatically as soon as you apply them in Xcode.
There does not seem to be any major breaking change in this format change (I tried few of my project, nothing changed in the xml structure itself except the version parameter..).
As far as I remember, there were few project formats before that, some of which actually had major changes, but that is probably not going to happen again because that was in the times of major structural changes to iOS, like from iOS2 to iOS3.
Also, just side note, the default for new projects is still 3.2 so it is very likely that 6.3 is basically for testing and version that they will force later will be -7.
My best guess would be that the new format is there for Swift 2 and the way how modules / dependencies are handled in there, as it for sure requires some additional data to be present in the project. But to be 100% sure we would need information from somebody on the Apple Team.
Hope it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With