Archiv der Kategorie: Swift

Swift 2.2

Voraussichtlich ist Swift 2.2 die letzte Swift-Version vor dem großen, für Herbst geplanten Update auf Swift 3. Swift 2.2 bietet im Vergleich zu Swift 2.0/2.1 einige neue Funktionen. Beim Design von Swift 2.2 war die Kompatibilität zu vorhandenem Swift-2-Code ein wichtiges Ziel. Die meisten Neuerungen sind als Ergänzungen/Erweiterungen konzipiert, die optional verwendet werden können, aber keinen Einfluss auf vorhandenen Code haben.

Dennoch zeigt Swift 2.2 bereits in einigen Punkten die Richtung an, in die sich Swift weiterentwickelt. So wurden diverse Sprachmerkmale von Swift als deprecated gekennzeichnet. Das betrifft z.B. klassische for-Schleifen, die in Swift 2.2 weiter ausgeführt werden, in Xcode aber als deprecated gekennzeichnet werden. Diese Kennzeichnung gibt Entwicklern die Möglichkeit, schon jetzt damit zu beginnen, ihren Code möglichst Swift-3-konform zu gestalten.

Diese Artikel fasst die Neuerungen auf der Basis von Xcode 7.3 Beta 5 zusammen. Ich werde den Text nach der Freigabe von Xcode 7.3 nochmals aktualisieren. Inzwischen ist Xcode 7.3 freigegeben. Es hat keine für diesen Artikel relevanten Änderungen mehr gegeben.

Lesen Sie auch die Zusammenfassung über den aktuellen Stand der Pläne für Swift 3!

Swift 2.2 weiterlesen

Braucht Linux Swift? Oder braucht Apple Linux?

Vor eineinhalb Jahren hat Apple die Programmiersprache Swift vorgestellt. Wie man es sich von einer neuen Sprache erwartet, ist Swift modern und vereint in sich viele (die besten?) Features aus diversen anderen Programmiersprachen, kombiniert mit ein paar eigenen Ideen.

Wie jede neue Sprache leidet Swift noch unter einigen Kinderkrankheiten. Die größte besteht darin, dass die Sprache work in progress ist. Wer immer sich auf Swift einlässt, muss damit rechnen, dass sein Code schon mit der nächsten Swift-Version an neue Syntaxregeln oder veränderte Standardbibliotheken angepasst werden muss. (In der Apple-eigenen Entwicklungsumgebung Xcode funktioniert das zum Glück weitgehend automatisch.)

Trotz dieser Einschränkung ist Swift durchaus schon praxistauglich und wird bereits intensiv genutzt. Der Grund dafür ist leicht erklärt: Wer native Apps für iOS, OS X, die Apple Watch etc. programmieren will, hat nur die Wahl zwischen Objective C (uralt mit steinzeitlicher und abschreckender Syntax) und Swift. Apple erklärt dezidiert, die Zukunft heißt Swift. Da fällt die Entscheidung nicht schwer …

Braucht Linux Swift? Oder braucht Apple Linux? weiterlesen

Versteckte Maus/Trackpad-Kürzel in Xcode

Manche Blog-Beiträge sind primär eine Gedächtnisstütze für den Autor. Dieser Beitrag fällt unter diese Kategorie — ist aber vielleicht auch für andere Xcode-Anwender nützlich. Er fasst zusammen, welche speziellen Maus- bzw. Trackpad-Kürzel es in Xcode gibt. (Wenn etwas fehlt: Bitte verfassen Sie einen Kommentar oder schreiben Sie an kontakt@kofler.info.)

Versteckte Maus/Trackpad-Kürzel in Xcode weiterlesen

try/catch in Swift 2

In der erste Version von Swift fehlte eine try-catch-Konstruktion zum Umgang mit Fehlern. Diese Entscheidung ist vielfach auf Unverständnis gestossen. In Version 2 hat Apple nachgebessert: Es gibt nun eine try/catch-Syntax, die ähnlich wie in anderen Programmiersprachen aussieht, auch wenn sie intern vollkommen anders und insbesondere ohne Exceptions implementiert ist.

Update 12.9.2015: Der Beitrag berücksichtigt jetzt auch »try!« und »try?«.

try/catch in Swift 2 weiterlesen

Swift 2: Reflection

Swift fehlt leider ein allgemein gültiger Ansatz, um die Eigenschaften von Objekten bzw. Typen festzustellen. Andere Programmiersprachen besitzen dafür Reflection-Funktionen, z.B. Objective C, C# oder Java.

Swift ist aber zumindest eingeschränkt zur Selbstreflexion in der Lage, wobei sich die Vorgehensweise in der gestern freigegebenen Beta 4 von Xcode 7 Beta 4 nochmals geändert hat:

  • Die globale Funktion reflect ist verschwunden, ebenso der MirrorType.
  • Dafür gibt es die neue Mirror-Klasse.

Swift 2: Reflection weiterlesen

Optionals in Swift — Fluch oder Segen?

Viele Programmiersprachen unterscheiden zwischen Wert- und Referenztypen. Werttypen sind für elementare Daten gedacht, vor allem Zahlen. Referenztypen enthalten dagegen Verweise auf Objekte. Sie können null sein, also nicht initialisiert, leer.

Swift unterscheidet ebenfalls zwischen Wert- und Referenztypen. Allerdings ist in Swift vieles ein Werttyp, was in anderen Sprachen ein Referenztyp wäre — Arrays, Dictionaries, Sets etc. Die eigentliche Besonderheit ist aber der Umgang mit dem Zustand null, der in Swift nil heißt:

  • »Gewöhnliche Variablen« — egal, ob Wert- oder Referenztypen — müssen vor vor der ersten Verwendung initialisiert werden; in Klassen muss die Initialisierung im Rahmen der Deklaration oder durch die init-Funktion erfolgen.
  • Nur wenn die Variable zusätzlich als »Optional« gekennzeichnet wird, ist auch der Zustand nil erlaubt. Optionals gibt es gleichermaßen für Wert- und Referenztypen.

Optionals in Swift — Fluch oder Segen? weiterlesen