# Xcode

Xcode ist eine integrierte Entwicklungsumgebung von Apple für macOS. Mit ihr lassen sich Programme für macOS, iPadOS, iOS, watchOS und tvOS entwickeln. Xcode ist für die Programmiersprachen Swift und Objective-C unter Verwendung der Cocoa-Frameworks gedacht. Die Programmiersprachen C, C++ können aber auch verwendet werden. Durch seine Modularität kann man damit aber auch Programme in anderen Sprachen schreiben (etwa in Java, Ruby, Perl oder Pascal).
Die Anwendung Xcode ist Bestandteil des gleichnamigen Software-Entwicklungspakets. Zur besseren Unterscheidung wird die Anwendung von Apple „Xcode IDE“ und das gesamte Entwicklungspaket meist „Xcode Tools“ (seltener „Xcode Package“) genannt.

## Bestandteile der Xcode Tools

Das Entwicklungspaket Xcode Tools besteht aus vielen verschiedenen Programmen (in Version 4.2 sind es ungefähr 40, Kommandozeilenprogramme nicht eingeschlossen); die wichtigsten davon sind:
* Xcode ist die Entwicklungsumgebung, in der man seine Projekte und Dateien verwalten, Code schreiben, Programme kompilieren und debuggen kann. Weiterhin ist von hier aus die API-Dokumentation zu erreichen.
* Interface Builder (ab Version 4.0 in Xcode integriert) dient zur Erstellung der grafischen Oberflächen der Mac- oder iOS-Programme. Hiermit werden außerdem Verbindungen zwischen Elementen der Benutzeroberfläche und dem Code (Aktionen, Variablen) hergestellt.
* Instruments (vormals Xray) ist ein Werkzeug zum Analysieren von Programmen bzgl. Speicherverbrauch, Dateizugriffe oder CPU-Engpässen. Die Technik basiert auf DTrace aus Sun Microsystems’ Betriebssystem Solaris.
* Xcode Core ist eine Ansammlung von notwendigen Bibliotheken und Tools und stellt die Basis von Xcode dar. Darunter fallen etwa die Compiler (GCC, LLVM, Clang), Debugger (GDB, LLDB, DTrace), Kommandozeilenprogramme (otool, lipo, strip, make, yacc) sowie Versionsverwaltungen (CVS, Subversion, Perforce, git).
* Dashcode ist eine IDE für Widgets für das Dashboard von macOS bzw. Web-Anwendungen für iOS. Die damit erstellten Anwendungen basieren auf Web-Techniken wie HTML, CSS und JavaScript. (In den ersten Monaten konnte man iPhone-Anwendungen nur mit Dashcode erstellen, bis Apple 2008 das iPhone SDK veröffentlichte.)
* Quartz Composer dient zum Erstellen sogenannter „Patches“ für Apples Grafiktechnik Quartz. Diese Patches werden direkt vom Grafik-Kernel ausgeführt und kommen an vielen Stellen in macOS zum Einsatz (Bildschirmschoner, iChat-Effekte).
* iPhone Simulator (ab Xcode 3.1) stellt einen beschränkten iPhone-Simulator zur Verfügung, mit dem iOS-Programme größtenteils ohne ein physisches Gerät getestet werden können.
Daneben gibt es noch eine Vielzahl weiterer Anwendungen, z. B. zum Hochladen von Apps oder zum Erstellen von Installationspaketen oder Icons.

## Versionen
### Vorgänger

Der direkte Vorgänger von Xcode hieß „Project Builder“, das gesamte Entwicklungspaket „Developer Tools“. Diese Namen stammen noch von NeXTStep, dem Vorgänger von Mac OS X. Diese Abstammung ist noch in Teilen zu erkennen; so beinhalten Xcode-Projektdateien immer eine Datei namens project.pbxproj (Project Builder X Project), und viele Klassennamen beginnen mit dem Präfix NS (NeXTStep).

### Developer Preview

Apple veröffentlichte auf der WWDC 2003 die Xcode 1.0 Developer Preview. Das hatte zwei Gründe: Zum einen konnte so die Beta-Software ausgiebig von den Entwicklern getestet werden, und zweitens lief Project Builder auch auf Mac OS X Panther, das auch auf der WWDC verteilt worden war.

### Xcode 1.0 bis 1.5

Xcode 1.0 wurde im Herbst 2003 zusammen mit Mac OS X 10.3 veröffentlicht. Neuerungen gegenüber Project Builder sind unter anderem eine neue Benutzeroberfläche, verteiltes Kompilieren via distcc, und Code-Vervollständigung (Code Sense genannt). Außerdem wurden Cocoa Bindings (bidirektionale Verknüpfungen zwischen Objekt-Attributen und Benutzeroberflächen-Elementen) eingeführt.
Xcode 1.1 und 1.2 behoben größtenteils Fehler der vorhergehenden Versionen; mit Xcode 1.5 wurden hauptsächlich Code Sense und das Debugging verbessert.
Xcode 1.0 und 1.5 können bis heute auf den Seiten des Entwickler-Portals von Apple heruntergeladen werden.

### Xcode 2.0 bis 2.5

Mit Mac OS X Tiger gab Apple auch Xcode 2.0 frei. Bedeutsame Änderungen sind hier Quartz Composer (siehe Abschnitt „Bestandteile der Xcode Tools“), Unterstützung für Core Data (zum persistenten Speichern von Daten), und Unterstützung für Ant. Außerdem neu war das Apple Reference Library Tool zum Lesen sowohl der Online-Dokumentation auf Apples Website als auch lokal gespeicherter Dokumentation.
Xcode 2.1 war die erste Version, die auf PowerPC- und Intel-Prozessoren lief und sogenannte Universal Binaries erstellen konnte, bei denen PPC- und Intel-Code in derselben Binärdatei enthalten waren. Auch neu waren Unit-Testing-Targets, bedingte Haltepunkte und bessere Überprüfung von Abhängigkeiten.
Xcode 2.2 bis 2.4 boten nur verschiedene Verbesserungen und Fehlerkorrekturen, insbesondere in den Bereichen Kompilieren, Debuggen, und verteiltes Kompilieren. Xcode 2.5 war auch für Mac OS X Leopard verfügbar, und behob nur einige Fehler von Xcode 2.4.

### Xcode 3.0 bis 3.2

Im Herbst 2007 gab Apple Xcode 3.0 gemeinsam mit Mac OS X 10.5 frei. Die wichtigsten Änderungen sind Unterstützung für Objective-C 2.0 mit Garbage Collection, DTrace (in Form von Instruments), Refactoring, Snapshots, und die Möglichkeit, bis zu vier Binärdateien zu erstellen (Intel und PowerPC mit je 32 und 64-bit). Auch Dashcode wurde zu den Xcode Tools hinzugefügt.
Zusammen mit dem iPhone SDK 2.0 wurde Xcode 3.1 freigegeben. Damit konnte man iPhone-Anwendungen erstellen, kompilieren, ausführen und debuggen. Als Compiler wurden gcc 4.2 und LLVM-gcc 2.4 ausgeliefert, und Subversion 1.5 wurde auch unterstützt. Xcode 3.1.4 ist die letzte Version für PowerPC.
Mit Mac OS X Snow Leopard zusammen wurde Xcode 3.2 freigegeben. Es bietet statische Code-Analyse via clang-Compiler, Support für Grand Central Dispatch (dynamische Thread-Verwaltung) und OpenCL.

### Xcode 4.0 bis 4.6

Xcode 4.0 wurde erstmals auf der WWDC 2010 vorgestellt und befand sich bis März 2011 in der Beta-Phase.
Xcode 4 wurde grundlegend überarbeitet. Zu den größten Neuerungen zählen etwa eine neue Benutzeroberfläche, die Integration des Interface Builder, neue Compiler und Debugger (LLVM und LLDB), und Unterstützung für git. Xcode 4.0 wurde für 3,99 Euro im Mac App Store für Mac OS X Snow Leopard ("Snow Leopard") zum Herunterladen angeboten.
Xcode 4.1 war die erste Version für Mac OS X Lion und war für Lion-Nutzer kostenlos im Mac App Store verfügbar. Dieselbe Version konnte auch über die Entwickler-Seiten heruntergeladen werden.
Mit Xcode 4.2 wurde LLDB 3.0 eingeführt, außerdem wurde Unterstützung für Automatic Reference Counting hinzugefügt. Dabei fügt der Compiler (mittels Code-Analyse) an den nötigen Stellen Codezeilen zur Speicherverwaltung (retain und release) ein; auf diese Art werden die Vorteile von manueller Speicherverwaltung und Garbage Collection miteinander verbunden. Xcode 4.2 ist auch die letzte Version für Snow Leopard.
Xcode 4.3 vereinigt die Xcode Tools in einem Programm, das in /Applications/ installiert wird. Damit ist eine einfachere Aktualisierung über den Mac App Store möglich. Das vorher verwendete Verzeichnis (/Developer/) wird auf Nachfrage entfernt.
Xcode 4.4 erschien am 25. Juli 2012 zusammen mit OS X Mountain Lion. Es beinhaltet LLVM 3.2 und unterstützte neue Versionen von Objective-C und C++.
Xcode 4.5 erschien am 19. September 2012 und brachte Unterstützung für iOS 6.0.
Xcode 4.6 erschien am 28. Januar 2013 und brachte Unterstützung für iOS 6.1.

### Xcode 5.0

Xcode 5.0 wurde erstmals auf der WWDC 2013 in Zusammenhang mit der Präsentation von OS X Mavericks vorgestellt und erschien am 18. September 2013. Neu sind die Unterstützung von iOS 7 und OS X 10.9. Es beinhaltet LLVM 3.3 und LLDB. Die Unterstützung für den LLVM-GCC-Compiler und GDB-Debugger wurde entfernt.

### Xcode 6.x

Xcode 6.0 wurde erstmals auf der WWDC 2014 am 2. Juni 2014 zusammen mit iOS 8.0 vorgestellt und nach der Präsentation als Beta-Version für Entwickler zur Verfügung gestellt. Es unterstützt die von Apple entwickelte Programmiersprache Swift, die laut Apple speziell für die Verwendung mit den Cocoa Frameworks und den Cocoa Touch Frameworks konzipiert wurde. Xcode 6.0 bietet sogenanntes Live Rendering, um bereits in Xcode zu beurteilen, wie sich die Benutzeroberfläche des fertigen Programms verhält.

### Xcode 7.0

Xcode 7.0 wurde erstmals auf der WWDC 2015 am 8. Juni 2015 zusammen mit iOS 9.0, OS X 10.11 El Capitan und watchOS 2.0 vorgestellt und nach der Präsentation als Beta-Version für Entwickler zur Verfügung gestellt. Mit Xcode 7.0 wurde Swift 2.0 eingeführt. Ebenso wurde das sogenannte „Live Rendering“ im Interface Builder erweitert, sodass es jetzt das exakte Aussehen der Benutzeroberfläche des fertigen Programms darstellt.
Seit Xcode 7.0 ist es möglich, auch ohne eine kostenpflichtige Mitgliedschaft in Apples Entwicklerprogramm, Apps auf iOS-Geräten zu testen.

### Xcode 8.0

Xcode 8.0 wurde erstmals auf der WWDC 2016 am 13. Juni 2016 zusammen mit iOS 10.0, macOS 10.12 Sierra und watchOS 3.0 vorgestellt und nach der Präsentation als Beta-Version für Entwickler zur Verfügung gestellt. Mit Xcode 8.0 wurde Swift 3.0 eingeführt. Ebenso wurde der Interface Builder optimiert, um eine höhere Arbeitsgeschwindigkeit realisieren zu können. Darüber hinaus ist es nun möglich, Erweiterungen für den Xcode-Editor zu installieren, um die Entwicklungsumgebung zu individualisieren.

### Xcode 9.0

Xcode 9.0 wurde erstmals auf der WWDC 2017 am 5. Juni 2017 zusammen mit iOS 11.0, macOS 10.13 High Sierra, watchOS 4.0 und tvOS 11 vorgestellt und den Entwicklern nach der Präsentation als Beta-Version zur Verfügung gestellt. Mit Xcode 9.0 wurde neben Swift 3.0 die Unterstützung für Swift 4.0 hinzugefügt sowie ab Xcode 9.3 die Unterstützung für Swift 4.1.

### Xcode 10.0

Xcode 10.0 wurde erstmals auf der WWDC 2018 am 4. Juni 2018 zusammen mit iOS 12.0, macOS 10.14 Mojave, watchOS 5.0 und tvOS 12 vorgestellt und den Entwicklern nach der Präsentation als Beta-Version zur Verfügung gestellt. Zeitgleich mit iOS 12.0 wurde es am 17. September 2018 im App Store veröffentlicht. U. a. enthält Xcode 10 nun die neusten SDKs für iOS 12, watchOS 5, tvOS 12 und MacOS Mojave, sowie die Swift Version 4.2.

### Xcode 11.0

Xcode 11.0 wurde erstmals auf der WWDC 2019 am 3. Juni 2019 zusammen mit iOS 13.0, dem neu eingeführten iPad-Betriebssystem iPadOS 13.0, macOS 10.15 Catalina, watchOS 6.0 und tvOS 13 vorgestellt und den Entwicklern nach der Präsentation als Beta-Version zur Verfügung gestellt. Zum Zeitpunkt der ersten Betaversion unterstützt Xcode 11.0 die neueste Swift-Version 5.0.1. Mit dem neuen Framework SwiftUI lassen sich durch die deklarative Syntax leichter Benutzeroberflächen entwickeln. Das ebenfalls neu eingeführte Framework Project Catalyst erlaubt es iPad-Apps ohne größere Code-Anpassungen für macOS zu portieren.

### Xcode 12.0

Xcode 12.0 wurde erstmals auf der WWDC 2020 am 22. Juni 2020 zusammen mit iOS 14.0, dem neu eingeführten iPad-Betriebssystem iPadOS 14.0, macOS 11.0 Big Sur, watchOS 7.0 und tvOS 14 vorgestellt und den Entwicklern nach der Präsentation als Beta-Version zur Verfügung gestellt. Mit Xcode 12.0 gab es zahlreiche kleine Verbesserungen und ein überarbeitetes Oberflächendesign. Auch wurden für die Unterstützung von iOS 14.0 neue Frameworks wie WidgetKit und App Clips hinzugefügt.

### Xcode 13.0

Xcode 13 wurde am 7. Juni 2021 auf der WWDC21 angekündigt; die erste Beta-Version wurde am selben Tag veröffentlicht. Die finale Version von Xcode 13 wurde am 20. September 2021 veröffentlicht. Neu ist die Unterstützung für Swift 5.5 und erfordert macOS 11.3 oder höher. Xcode 13 enthält SDKs für iOS/iPadOS 15, macOS 12, watchOS 8 und tvOS 15. Zu den Hauptfunktionen von Xcode 13 gehören das neue Parallelitätsmodell, verbesserte Unterstützung für Versionskontrollanbieter (wie z. B. GitHub) und ein besseres Design.

### Xcode 14.0

Xcode 14 wurde am 12. September 2022 zusammen mit iOS 16.0, watchOS 9.0 und tvOS 16.0 auf der WWDC 2022 veröffentlicht und liegt seit dem 13. Dezember 2022 in der Version 14.2 vor.