Swift und iPhone 6 – Implikationen für iOS-Entwickler

Autor: Tom Reineke, 29.09.2014 um 13:00 Uhr | Kategorien: Entwicklung | iOSSchreibe einen Kommentar

In jüngster Vergangenheit kamen eine ganze Reihe von Veränderungen auf iOS-Entwickler zu: Swift, die neue Programmiersprache für iOS, soll allmählich Objective-C ablösen und mit dem iPhone6 und iPhone6+ gibt es nun zwei neue Displaygrößen, die unterstützt werden wollen (Android-Entwickler mögen darüber schmunzeln). Da ich selbst gerade einen App-Prototyp entwickle, stellt sich die Frage, welche Implikationen diese Neuerungen für mich haben.

Swift

Swift gibt es aktuell in der Version 1.0 und wird ab X-Code 6 voll unterstützt. Beim Anlegen neuer Projekte kann man auswählen, ob das Grundgerüst in Swift oder Objective-C erzeugt werden soll.


Abb. 1: Soll ein neues Projektgerüst in Swift oder Objective-C erstellt werden?

Bei Betrachtung der Swift-Doku zeigen sich eine ganze Reihe konzeptioneller Ähnlichkeiten zu modernem Objective-C (Protocols, Automatic Reference Counting) und anderen modernen Programmiersprachen wie Scala (Closures). Wirklich neu war für mich das Konzept von Optionals bzw. Optional Chaining. Dies erlaubt ziemlich schlanken Code, weil man sich Null-Prüfungen zur Verhinderung von Nullpointer-Exceptions sparen kann, wie man im folgenden Beispiel von Apple sieht:

if let johnsStreet = john.residence?.address?.street {
    println("John's street name is \(johnsStreet).")
} else {
    println("Unable to retrieve the address.")
}

Abb. 2: Wenn die Attribute residence oder address nil sind, dann fliegt hier keine Nullpointer-Exception wie in anderen Sprachen, sondern johnsStreet wird auf nil gesetzt und daher in den else-Block gesprungen. Durch den ?-Operator wird ein Attribut als Optional gekennzeichnet und dieses Verhalten hervorgerufen. Das Schlüsselwort let deklariert im Übrigen eine Konstante (im Gegensatz zum Schlüsselwort var, mit dem man Variablen deklariert).

Etwas schade ist, dass es immer noch keine Garbage Collection wie in Java gibt und man immer noch auf strong reference cycles achten muss. Das sind Zyklen von Objekten, die innerhalb des Programmablaufs keine Funktion mehr haben, aber trotzdem weiterhin Speicher belegen.
Da Apple einen Schritt-für-Schritt Leitfaden für die Migration von Objective-C zu Swift bereitgestellt hat, habe ich überlegt, den bisherigen App-Prototyp zu migrieren, mich dann aber aus folgenden Gründen dagegen entschieden:

  • Schlechtes Aufwand-Nutzen Verhältnis: ich sehe bisher primär den Aufwand einer Migration und die Umgewöhnung in der Syntax, aber kein Killer-Feature von Swift, das ich unbedingt brauche
  • Weniger Q&As/Doku: viele Probleme, auf die man mit Objective-C stoßen kann, wurden schon in Expertenforen wie stackoverflow.com behandelt; auch ist die offizielle Swift-Dokumentation noch vorläufig und bei weitem nicht so reich wie die für Objective-C, die ich auch wegen ihrer vielen Beispiel-Apps genial finde
  • Ein Mischen von Objective-C und Swift innerhalb eines Projekts, was X-Code erlaubt, halte ich für schlecht im Hinblick auf die Wartung: die Anforderung, dass ein Entwickler sich in beiden Programmiersprachen gut auskennen und vor allem schnell und reibungslos umschalten können muss, scheint mir unangemessen.
iPhone6 / iPhone6+

Soweit also erst einmal keine Veränderung für mich, aber was ist mit den neuen Displaygrößen von iPhone6 und iPhone6+? Wer bisher schon für iPhone4 und iPhone5 entwickelt hat, was mit dem Storyboard von X-Code 5+ und dem „Auto Layout“-Mechanismus gut geht, für den ergeben sich keine großen Änderungen. Nur für das iPhone6+ sind zwei Sachen zu beachten:

  • Bei Icons und Bildern muss neben den Versionen für die einfache und doppelte Pixelauflösung (@1x, @2x) auch die dreifache Pixelauflösung (@3x) ausgeliefert werden
  • Aufgrund der neuen Darstellung im Landscape Modus wird die Verwendung sogenannter Size Classes wichtiger, also Definitionen für die Darstellung bei unterschiedlichen Displaygrößen und Ausrichtungen (Portrait, Landscape)

In Anbetracht dieser Überlegungen werde ich nicht zum early adopter was Swift angeht, sondern mache erst einmal weiter wie bisher. Das mag sich aber schon beim nächsten „Grüne-Wiese-Projekt“ ändern 🙂

Kommentare

Es gibt noch keine Kommentare

Back to top

feedback erwünscht

Über alles was wir so bloggen, reden wir auch gerne.
Melden Sie sich bei Uns, wir freuen uns über jeden direkten Austausch.

Back to top