Btn training bbbdf557d2 Nächste iOS-Schulung: 25. Februar - 01. März 2019, Stuttgart

2. Überblick: App-Entwicklung mit dem iOS SDK und Xcode

Tools

Xcode

Xcode ist die Apple-Entwicklungsumgebung zur Entwicklung für iOS, macOS, tvOS und watchOS. Da Xcode ausschließlich für macOS verfügbar ist, wird ein Mac benötigt, um Xcode zu verwenden.

iOS SDK

In Xcode enthalten ist das iOS SDK mit allen benötigten Bibliotheken zur Entwicklung von iOS-Apps.

LLVM

Apps für iOS werden in Swift oder Objective-C entwickelt und mit den Tools der LLVM-Compiler-Suite übersetzt.

iOS Simulator

Der iPhone Simulator erlaubt das schnelle Testen ohne Hardware-Gerät. Dabei wird unter macOS das Verhalten von iOS weitestgehend analog zu den echten Geräten simuliert.

Instruments

Instruments ist ein Profiler, mit dem Apps zum Beispiel auf Speicher- oder Performance-Engpässe hin untersucht werden können.

Programmiersprachen Swift & Objective-C

Apple hat 2014 hat auf der jährlichen Entwicklerkonferenz WWDC die Programmiersprache Swift vorgestellt. Seitdem wurde diese Sprache umfangreich erweitert und verbessert. Nachdem die ersten Versionen von umfangreichen und mit den Vorgängerversionen inkompatiblen Sprachänderungen geprägt waren, hat sich die Entwicklung der Sprache seitdem stabilisiert. Mit Xcode 9 wurde Version 4 von Swift ausgeliefert. Diese Version ist diesmal bis auf Details komplett rückwärtskompatibel und es wurden keine Änderungen an bestehendem Code notwendig; es wurden lediglich Detailverbesserungen vorgenommen.

Swift ist eine moderne, objektorientierte Programmiersprache, die viele Ideen aus anderen Paradigmen wie der funktionalen Programmierung und aus Programmiersprachen wie Objective-C, Rust, Haskell, Ruby und Python aufgreift. Obwohl Swift eine typsichere, compilierte Sprache ist, für die der Compiler viele Fehler bereits in der Compilierphase erkennen kann, hat sie eine sehr elegante und kompakte Syntax, die an Skriptsprachen erinnert. Beispielweise können Typdeklarationen in Swift-Code häufig entfallen, da der Swift-Compiler die Typen automatisch ermittelt:

let names = ["Bob", "Alice"]    // Compiler ermittelt den Typ Array<String> für names
for name in names {             // Compiler ermittelt den Typ String für name
    print("Hello \(name)!")
}

Im Gegensatz zu Swift ist Objective-C, das vor Swift zur Programmierung von iOS-Apps verwendet wurde, eine Erweiterung von C. Es erweitert C um Sprachkonstrukte zur objektorientierten Programmierung. Die Syntax von Objective-C wurde stark von der Sprache Smalltalk inspiriert - zum Beispiel werden Methodenaufrufe in eckigen Klammern geschrieben:

NSString *str = @"Hello world";
NSString *hello = [str substringToIndex:5];

Apple hat mehrfach deutlich gemacht, das Objective-C neben der neuen Programmiersprache Swift weiterhin vollwertig unterstützt wird. Es wurde auf die Kompatibilität zwischen den beiden Sprachen geachtet - so können Objective-C Klassen aus Swift heraus verwendet werden und umgekehrt. Dies funktioniert mit einigen Einschränkungen gut - schwierig wird es lediglich, wenn neue Swift-Sprachfeatures zum Einsatz kommen, zu denen es in Objective-C keine Entsprechung gibt.

Aufgrund seineren einfacheren und moderneren Syntax ist Swift der klare Favorit für die Entwicklung von Apps. Objective-C kommt hauptsächlich in bestehenden Projekten zum Einsatz, die bereits in Objective-C entwickelt wurden oder in Projekten in denen die Notwendigkeit besteht, systemnah zu arbeiten oder tiefgreifend mit bestehenden C-Bibliotheken zu interagieren.

Architektur von iOS, Frameworks

Das iOS SDK stellt zahlreiche Frameworks für die Entwicklung von Apps bereit. Diese sind in 4 Schichten eingeteilt:

Xcode

Core OS

In der Core-OS-Schicht finden sich Bibliotheken zur systemnahen Programmierung. Neben Schnittstellen zum UNIX-Kernel Mach von iOS werden hier sicherheitskritische Funktionalitäten wie Keychain Services für die Ablage von Passwörtern im Schlüsselbund des Systems angeboten und es finden sich mit Core Bluetooth und dem External Accessory Framework Komponenten für die Kommunikation mit externen Hardwaregeräten.

Core Services

Unter Core Services sind Basisdienste ohne grafischen Oberflächenfunktionalitäten zusammengefasst. Eine besondere Rolle kommt dem Foundation-Framework zu, welches die Laufzeitumgebung für iOS-Apps und über die Swift Standard Library hinausgehende Datenstrukturen bereitstellt. Grundlage dieser Bibliothek ist die C-Bibliothek Core Foundation. Typische Vertreter von Core Services-Frameworks sind:

Core Media

Im Media Layer werden neben den Bibliotheken Core Graphics und Core Animation, die systemnahe Zeichenfunktionalitäten bereitstellen, auch Core Image, Image IO, AV Foundation, AVKit und Media Player-Frameworks zum Umgang mit Bild-, Audio- und Videodaten angeboten. Für die 3D-Programmierung werden das plattformübergreifende OpenGL ES, die Apple-eigene-Alternative Metal oder die High-Level-Frameworks Spritekit (2D) und SceneKit (3D) verwendet.

Cocoa Touch

In Cocoa Touch findet sich vor allem das Framework UIKit für die Realisierung der grafischen Oberfläche von Apps - diese ist die wichtigste Bibliothek für iOS-Entwickler und unterscheidet sich aufgrund des Fokus auf Touch-Bedienung stark vom Desktop-Variante Cocoa. Außerdem werden in dieser Schicht grafische Komponenten für den Zugriff auf Adressbuch, Kalender und Nachrichten bereitgestellt. Mit App Extensions erfolgt die Integration in andere Apps.

Tutorial 1: Xcode-Projekt erstellen

  1. Die Tutorials in diesem Buch wurden erstellt und getestet für Xcode 9.4. Installieren Sie die aktuelle Version von Xcode über den Mac App Store:

    Installation Xcode über den Mac App Store

    Tipp: Alternativ können Sie unter developer.apple.com/download/more/ Xcode als Archiv herunterladen (Login mit Apple ID erforderlich). Dies ist insbesondere praktisch wenn für ein bestehendes Projekt eine ältere Version von Xcode benötigt wird.

  2. Starten Sie Xcode und prüfen Sie im Startbildschirm, dass Sie die aktuelle Xcode-Version verwenden:

    Xcode Version im Willkommensbildschirm
  3. Erstellen Sie in Xcode mit File » New » Project... ein neues Projekt. Wählen Sie als Vorlage iOS » Application » Single View Application:

    File » New » Project » iOS » Application » Single View Application
  4. Geben Sie Flashcards als Produktname an. Prüfen Sie die Einstellungen dahingehend, dass Swift verwendet wird und die App zunächst ohne Unterstützung für Core Data und mit Unit- und UI-Tests erstellt wird:

    Xcode Projekteinstellungen

  5. Legen Sie einen Ordner fest, in dem der Projektordner angelegt werden soll. Xcode wird hier einen Ordner „Flashcards“ erstellen.
    Achten Sie darauf, dass Create Git Repository aktiviert ist, da das lokale Git-Repository im Folgenden zur Versionierung des Beispielprojektes verwendet wird:

    Xcode - Create Git Repository

Weiterführende Informationen

Apple Developer Documentation ▸ Hier finden Sie die API-Dokumentation aller von Apple bereitgestellten Frameworks.
https://developer.apple.com/documentation

Guides and Sample Code ▸ Zu vielen Frameworks existieren ausführliche Guides und Beispielprojekte, die leider nicht vollständig in der API-Dokumentation verlinkt sind und über diese Seite gefunden werden können. Insbesondere der Guide iOS Technology Overview bietet sich als Einstiegsdokument an: Hier werden alle Frameworks, die das iOS SDK bereitstellt, beschrieben und die zugehörige Dokumentation verlinkt.
https://developer.apple.com/library/ios/navigation/

WWDC Session Videos ▸ Apple veröffentlicht Videos von allen Vorträgen der Apple Worldwide Developers Conference, die jedes Jahr im Juni stattfindet.
https://developer.apple.com/videos/wwdc2017/
https://developer.apple.com/videos/wwdc2016/

How to stay up to date with Swift and the Developer Community ▸ Der Blogpost bietet eine Übersicht über die wichtigsten Entwickler-Blogs und Webseiten der iOS-Entwicklergemeinde.
https://www.weheartswift.com/stay-up-to-date-swift-developer-community/

iOS Dev Weekly ▸ Kostenfreier E-Mail-Newsletter der wöchentlich Informationen aus der iOS-Entwicklergemeinde, etwa zu Open-Source-Frameworks oder interessante Blogposts, zusammenstellt.
https://iosdevweekly.com/

iOS-Entwickler-Konferenzen in Deutschland ▸ Übersicht über Konferenzen in Deutschland für iOS-Entwickler.
https://www.ralfebert.de/ios/german-ios-developer-conferences/

Btn book fed239f0c0 Buch „iOS 11-Apps entwickeln mit Swift & Xcode 9“
Btn training bbbdf557d2 Nächste iOS-Schulung: 25. Februar - 01. März 2019, Stuttgart
Btn about 5378472193 Über mich · Kontakt