Ideal für Programmiereinsteiger - s3-eu-west-1… · Abbildung 1.33 Das Statusfenster von Xcode...

29
Leseprobe Wenn Sie lernen wollen, wie Sie Apps mit Swift programmieren, dann sind Sie hier genau richtig. Diese Leseprobe führt Sie Schritt für Schritt durch die Entwicklung eines Hallo-Welt-Programms und erklärt Ihnen, wie Sie Benutzeroberflächen mit Swift und XCode ge- stalten. Programmiereinsteiger finden so einen leichten Zugang zur App-Entwicklung. Jörg Brunsmann, Dominik Hauser, Klaus M. Rodewig Apps programmieren mit Swift – Ideal für Programmiereinsteiger 371 Seiten, broschiert, Dezember 2016 29,90 Euro, ISBN 978-3-8362-4090-1 www.rheinwerk-verlag.de/4094 »Die erste App« (Auszug) »Erstellen von Benutzeroberflächen« (Auszug) Inhaltsverzeichnis Index Die Autoren Leseprobe weiterempfehlen Wissen, wie’s geht.

Transcript of Ideal für Programmiereinsteiger - s3-eu-west-1… · Abbildung 1.33 Das Statusfenster von Xcode...

LeseprobeWenn Sie lernen wollen, wie Sie Apps mit Swift programmieren, dann sind Sie hier genau richtig. Diese Leseprobe führt Sie Schritt für Schritt durch die Entwicklung eines Hallo-Welt-Programms und erklärt Ihnen, wie Sie Benutzeroberflächen mit Swift und XCode ge-stalten. Programmiereinsteiger finden so einen leichten Zugang zur App-Entwicklung.

Jörg Brunsmann, Dominik Hauser, Klaus M. Rodewig

Apps programmieren mit Swift – Ideal für Programmiereinsteiger371 Seiten, broschiert, Dezember 2016 29,90 Euro, ISBN 978-3-8362-4090-1

www.rheinwerk-verlag.de/4094

»Die erste App« (Auszug) »Erstellen von Benutzeroberflächen« (Auszug)

Inhaltsverzeichnis

Index

Die Autoren

Leseprobe weiterempfehlen

Wissen, wie’s geht.

1 Ein kleiner Schritt …

44

Abbildung 1.26 Apples neue Programmiersprache Swift

1.3.1 Das steckt hinter Swift

Wenn man so will, ist Swift die Weiterentwicklung von Objective-C. Swift hat viele

Eigenschaften, die auch Objective-C hat, es bietet Mechanismen wie Klassen oder Verer-

bung. Das liegt allerdings weniger daran, dass sich Swift bei Objective-C bedient hätte,

sondern daran, dass Swift – so wie alle modernen Programmiersprachen – eine objekt-

orientierte Sprache ist. Neben Objective-C standen auch Sprachen wie Ruby, Python

oder Rust Pate für Swift.

Apple hat für angehende Swift-Programmierer eine eigene Webseite unter developer.

apple.com/swift eingerichtet. Hier gibt es ein eigenes Blog, einige Einführungsvideos

und andere Hilfen, wenn Sie sich näher mit Swift beschäftigen möchten.

Es gibt auch ein richtiges Handbuch zu Swift, in dem alle wichtigen Funktionen und

Vorgehensweisen erklärt werden. Das Handbuch ist in zwei Teile gegliedert, Sie können

4090-1.book Seite 44 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

45

1beide kostenlos aus dem Apple Bookstore laden und auf dem Mac, dem iPad oder

iPhone lesen.

Swift ist seit Ende 2015 Open Source. Das bedeutet, dass der Quelltext, der die Program-

miersprache ausmacht (und die Programme, die aus dem Quelltext ein ausführbares

Programm erstellen), für jeden einsehbar auf einer Seite im Internet zur Verfügung

gestellt wird. Mehr noch, Apple ermutigt die Entwicklergemeinde dazu, aktiv bei der

Weiterentwicklung von Swift mitzuhelfen. In der Version 2.2 wurden zum ersten Mal

Beiträge von Entwicklern, die nicht zu Apple gehören, in die Sprache mit aufgenommen.

Als erste Anlaufstelle für interessierte Entwickler hat Apple die Internetseite swift.org

eingerichtet. Schauen Sie sich die Seite ruhig einmal an. Apple hat sich damit sehr viel

Mühe gegeben und gezeigt, dass sie es ernst meinen mit Swift. Aber lassen Sie sich nicht

entmutigen, wenn Sie die verwendeten Begriffe noch nicht verstehen. Die Seite ist eher

für erfahrene Swift-Entwickler gedacht.

1.3.2 Warum eine neue Programmiersprache?

Die Frage ist: Warum überhaupt entwickelt Apple eine eigene Programmiersprache? So

schlecht kann das bisher verwendete Objective-C nicht sein, sonst würde es nicht eine

solche Menge an Apps geben. Aber vielleicht darf man diese Frage gar nicht so stellen,

sondern muss anders an die Sache herangehen.

Apple hat Swift wahrscheinlich vor allem deshalb entwickelt, weil sie es können. Und

weil sie mit Swift auch Dinge umsetzen können, die ihnen in Objective-C gefehlt haben

oder die sie dort zu kompliziert fanden. Klar, wenn man Besitzer eines Hauses ist, fällt

der Umbau deutlich leichter, als wenn man Hunderte von Mitbewohnern und -besit-

zern von den Bauplänen überzeugen muss. Will Apple die Softwareentwicklung für die

eigenen Geräte vorantreiben, macht es – aus ihrer Sicht – durchaus Sinn, eine eigene

Programmiersprache dafür ins Leben zu rufen.

1.4 Die erste App

Der Mac läuft, Xcode ist installiert, jetzt wird es Sie jucken, die erste App zu programmie-

ren. Also los! Damals, als das Internet noch schwarzweiß war, die Telekom noch Bundes-

post hieß und Computer große, graue Kisten mit schwarzen Terminals waren, auf

denen grüne Schrift flimmerte, war Programmieren eine anstrengende und wenig intu-

itive Arbeit. Mit Xcode sieht das glücklicherweise ganz anders aus: Die IDE unterstützt

Sie, wo sie nur kann, dabei, gute Apps zu schreiben. Damit Sie einen Überblick über die

4090-1.book Seite 45 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

46

Fähigkeiten von Xcode erhalten und gleichzeitig sehen, wie schnell eine einfache App

erstellt ist, werden Sie nun Ihre (wahrscheinlich) erste App für das iPhone schreiben.

Dabei werden Sie bereits einige Zeilen Code programmieren, ohne dass Sie verstehen,

was diese Zeilen bedeuten. Keine Angst, das ist gewollt! Direkt im nächsten Kapitel stei-

gen Sie in die Praxis der Programmierung ein, Ihre Fragen bleiben also nicht lange

unbeantwortet.

Öffnen Sie jetzt Xcode. Sie werden mit einem Startbildschirm begrüßt (siehe Abbil-

dung 1.27).

Abbildung 1.27 Das Startfenster von Xcode

Wählen Sie im Startbildschirm den Punkt Create a new Xcode project, um ein neues

Projekt anzulegen. Xcode zeigt Ihnen im nächsten Dialog die Liste der möglichen Pro-

jektarten an. Wählen Sie in der oberen Leiste den Punkt iOS. In der Übersicht darunter

sehen Sie nun verschiedene Arten von Apps, die Sie mit Xcode erstellen können (siehe

Abbildung 1.28).

Für den Anfang, und davon abgesehen für die meisten Fälle, wählen Sie den Typ Single

View Application und betätigen anschließend den Next-Button unten rechts im

Fenster. Im nächsten Dialogfenster müssen Sie noch einige Optionen festlegen, bevor

Sie mit der eigentlichen Programmierung beginnen können (siehe Abbildung 1.29).

4090-1.book Seite 46 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

47

1

Abbildung 1.28 Die Projektschablonen von Xcode

Abbildung 1.29 Die Projektoptionen von Xcode

4090-1.book Seite 47 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

48

Der Product Name ist der Name der App, also der Name, den Sie unter dem Icon der

App auf dem iPhone sehen. Geben Sie der App den Namen »Hallo Welt«. Das Feld Team

können Sie für den Moment ignorieren. Das Feld Organization Name enthält den

Namen der Firma, unter dem Sie die App veröffentlichen wollen. Da es sich hier ja ledig-

lich um eine Test-App handelt, können Sie dort eintragen, was Sie wollen.

Dasselbe gilt für den Organization Identifier, der dazu dient, aus der Kombination

einer Internetdomäne und des App-Namens einen eindeutigen Bezeichner zu erstel-

len. Diese Angabe ist für die Veröffentlichung im App Store wichtig. Wenn Sie keine

eigene Internetdomäne besitzen, verwenden Sie als Organization Identifier ein-

fach eine Kombination aus Ihrem Vor- und Nachnamen, also zum Beispiel »bruns-

mann.joerg«. Xcode macht daraus zusammen mit dem Namen der App den Bezeichner

brunsmann.joerg.Hallo-Welt; Xcode zeigt dies bereits beim Eingeben der entsprechen-

den Werte an.

Als Programmiersprache (Language) wählen Sie bitte Swift aus.

Nachdem Sie den Dialog über den Next-Button beendet haben, fragt Xcode nach einem

Ordner, in dem es das neue Projekt ablegen soll. Suchen Sie ein passendes Plätzchen auf

der Festplatte Ihres Macs, und legen Sie am besten ein neues Verzeichnis für Ihre kom-

menden Projekte an (siehe Abbildung 1.30). Über den Button Create veranlassen Sie

anschließend Xcode, das Projekt mit den von Ihnen festgelegten Parametern anzulegen.

Abbildung 1.30 Das Projekt braucht eine Heimat!

Nach dem Anlegen des neuen Projekts begrüßt Sie der Hauptbildschirm von Xcode, den

Sie ja in Abschnitt 1.2.6 bereits kennengelernt haben (siehe Abbildung 1.31).

4090-1.book Seite 48 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

49

1

Abbildung 1.31 Das neue Projekt im Xcode-Fenster

Ganz links in der Werkzeugleiste von Xcode finden Sie den wichtigsten Button über-

haupt: den Run-Button (siehe Abbildung 1.32). Damit weisen Sie Xcode an, den Quell-

text der App zu übersetzen und auszuführen. In dem Dropdown-Feld rechts neben dem

ausgegrauten Stop-Button können Sie festlegen, wo Xcode die App ausführt. Standard-

mäßig ist hier der iPhone-Simulator ausgewählt. Belassen Sie diese Einstellung, und

drücken Sie anschließend den Run-Button.

Abbildung 1.32 Der wichtigste Button von Xcode

Im Statusfenster von Xcode, in der Mitte der Werkzeugleiste, werden Sie nun allerlei

Aktivität erkennen. Nach Beenden des Übersetzungsvorgangs startet Xcode den

iPhone-Simulator, und das Statusfenster meldet Vollzug (siehe Abbildung 1.33).

Abbildung 1.33 Das Statusfenster von Xcode

Der iPhone-Simulator zeigt Ihnen die übersetzte App an. Xcode benutzt standardmäßig

den iPhone-7-Plus-Simulator. Da das iPhone 7 Plus eine sehr hohe Anzahl an Pixeln hat,

4090-1.book Seite 49 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

50

sehen Sie, abhängig von der Auflösung Ihres Macs, nur einen kleinen Ausschnitt der

App. Sie können die Größe des simulierten iPhones ändern, indem Sie im Menüpunkt

Window unter Scale einen passenden Wert auswählen (siehe Abbildung 1.34).

Abbildung 1.34 Die Darstellungsgröße des simulierten iPhones ändern

Da Sie bisher noch nichts programmiert haben, ist die App ziemlich funktionslos (siehe

Abbildung 1.35).

Abbildung 1.35 Die App im Simulator: ostfriesische Nationalflagge

4090-1.book Seite 50 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

51

1Immerhin sehen Sie aber eine weiße Fläche. Das ist schon mal ein guter Anfang, denn

das bedeutet zum einen, dass das Übersetzen geklappt hat, zum anderen bedeutet es,

dass Xcode Ihnen bereits eine Menge Arbeit abgenommen hat. Es hat automatisch den

Quelltext des Projekts in eine ausführbare Datei übersetzt, es hat diese Datei in den

iPhone-Simulator geladen und gestartet, und die App verfügt bereits über ein Fenster.

Um diese Dinge müssen Sie sich also schon nicht mehr kümmern. Beenden Sie nun die

App über den Stop-Button in der Werkzeugleiste von Xcode.

1.4.1 Hallo Welt

In der IT ist es Tradition, dass das erste Programm eines Neulings daraus besteht, die

zwei Wörter »Hallo Welt« auszugeben. Das ist in etwa so, wie Tontechniker beim Test

von Mikrofonen immer »1, 2, 3 – Test – Test« sagen. Abgesehen von der Tradition ist ein

schöner Nebeneffekt, dass man über Hallo-Welt-Programme die Syntax von Sprachen

vergleichen kann. Wikipedia hält eine schöne Seite bereit, auf der die Hallo-Welt-Pro-

gramme von zurzeit 112 verschiedenen Programmiersprachen aufgeführt sind. Es gibt

dort sogar ein Hallo-Welt-Programm in Swift, der Sprache, in der die iPhone-Apps

geschrieben sind.

Um aus der von Xcode erzeugten, leeren App eine Hallo-Welt-App zu machen, wählen

Sie im Navigationsbereich von Xcode die Datei Main.storyboard aus (siehe Abbildung

1.36). Damit öffnen Sie den grafischen Editor von Xcode, den Interface Builder. Dort kön-

nen Sie die grafische Benutzeroberfläche der App, das GUI (für Graphical User Interface),

bequem mit der Maus zusammenstellen.

Abbildung 1.36 Die Datei »Main.storyboard«

Im Interface Builder sehen Sie ein rechteckiges weißes Feld. Dies stellt die Oberfläche

Ihrer App dar (siehe Abbildung 1.37).

4090-1.book Seite 51 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

52

Abbildung 1.37 Der Interface Builder

Die Xcode-Utilities enthalten unter anderem verschiedene Elemente zum Bauen der

Benutzeroberfläche einer App. Die Hallo-Welt-App soll ja den Text »Hallo Welt« anzei-

gen, also benötigen Sie zunächst ein Element zum Anzeigen von Text. Öffnen Sie dazu

die Objektbibliothek, indem Sie den Menüpunkt View � Utilities � Show Object

Library auswählen (siehe Abbildung 1.38).

Abbildung 1.38 Anzeige der Objektbibliothek aktivieren

4090-1.book Seite 52 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

53

1Am unteren Ende der Objektbibliothek finden Sie ein Suchfeld, in das Sie den Text

»label« eingeben. Xcode zeigt Ihnen das entsprechende Objekt an und gibt die Beschrei-

bung direkt dazu: A variably sized amount of static text (siehe Abbildung 1.39).

Das klingt gut.

Abbildung 1.39 Ein Label

Abbildung 1.40 Man nehme ein Label …

4090-1.book Seite 53 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

54

Nehmen Sie nun das Label mit der Maus (siehe Abbildung 1.40), und ziehen Sie es mit

gedrückter Maustaste auf die im Interface Builder angezeigte Oberfläche der App. Dort

lassen Sie das Label los (siehe Abbildung 1.41). Xcode zeigt Hilfslinien an, die Ihnen dabei

helfen, das Label genau in der Mitte der Oberfläche zu platzieren.

Abbildung 1.41 … und platziere es auf der Oberfläche der App.

Anschließend ziehen Sie ein Objekt vom Typ Button auf das GUI. Geben Sie »Button«

in das Suchfeld der Objektbibliothek ein, und ziehen Sie ein Objekt vom Typ Button

(siehe Abbildung 1.42) auf die Oberfläche der App (siehe Abbildung 1.43).

4090-1.book Seite 54 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

55

1

Abbildung 1.42 Das ist der richtige Button.

Abbildung 1.43 Die fertige Oberfläche der App

Wenn Sie die App nun übersetzen und in einem iPhone-7-Simulator starten (siehe

Abbildung 1.44), …

4090-1.book Seite 55 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

56

Abbildung 1.44 Starten Sie die App auf einem iPhone-7-Simulator.

… sollte der iPhone-Simulator ein Bild wie in Abbildung 1.45 abgeben.

Abbildung 1.45 Trost-, aber nicht hoffnungslos

4090-1.book Seite 56 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

57

1Anders sieht es aus, wenn Sie die App auf einem iPhone-SE-Simulator starten (siehe

Abbildung 1.46).

Abbildung 1.46 Schön ist das nicht!

Label und Button sind ja gar nicht mittig. Noch keine Zeile programmiert, schon geht

der Ärger los. Das ist das Ergebnis der mittlerweile vielen verschiedenen iPhone-

Modelle mit verschiedenen Displaygrößen. Ein im Interface Builder schnell zusammen-

geklicktes GUI ist nicht automatisch ein ordentliches GUI, und Elemente können ver-

rutscht erscheinen. Xcode verfügt aber praktischerweise über eine Funktion namens

Autolayout. Öffnen Sie dafür den Interface Builder, halten Sie die (cmd)-Taste gedrückt,

und markieren Sie mit der Maus das Label und den Button.

4090-1.book Seite 57 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

58

Anschließend klicken Sie auf den Align-Button unten in der Fußzeile des Interface Buil-

ders (siehe Abbildung 1.47).

Abbildung 1.47 Label und Button auswählen und auf »Align« klicken

Es öffnet sich ein Fenster, mit dem Sie die Position von GUI-Elementen festlegen kön-

nen. Für den Anfang reicht es, dass Sie für die beiden gewählten Elemente, Label und

Button, festlegen, dass diese immer mittig auf dem Bildschirm erscheinen sollen. Wäh-

len Sie daher Horizontally in Container, belassen Sie den Wert auf 0, und bestäti-

gen Sie mit dem unteren Button (Add 2 Constraints).

Markieren Sie nun nur das Label, und klicken Sie erneut den Align-Button. Wählen Sie

Vertically in Container, belassen Sie wiederum den Wert auf 0, und bestätigen Sie

mit dem unteren Button (Add 1 Constraint).

Als Nächstes markieren Sie den Button (1 in Abbildung 1.48) und klicken den Pin-But-

ton (rechts neben dem Align-Button 2). Es öffnet sich ein Fenster, in dem Sie den But-

ton relativ zu anderen UI-Elementen festpinnen können. Klicken Sie in dem Fenster auf

den roten Balken direkt unter dem oberen Textfeld 3, und bestätigen Sie mit dem unte-

ren Button (Add 1 Constraint 4). Damit legen Sie fest, dass der Button 8 Pixel unter-

halb des Labels angezeigt werden soll.

Führen Sie die App jetzt auf einem iPhone-SE-Simulator aus. Siehe da, Label und Button

sind mittig. Heureka!

4090-1.book Seite 58 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

59

1Sie können den Button der App so oft drücken, wie Sie wollen – es passiert nichts. Das

liegt daran, dass Sie über den Interface Builder zwar die Gestaltung Ihrer Apps vorneh-

men können, die Funktionalität aber »zu Fuß« im Hintergrund programmieren müs-

sen. Also in die Hände gespuckt, jetzt beginnt die eigentliche Programmierarbeit.

Abbildung 1.48 Den Button festpinnen

Wählen Sie, falls nicht ohnehin noch geöffnet, im Navigationsbereich von Xcode die

Datei Main.storyboard, so dass der Interface Builder geöffnet ist, und aktivieren Sie

anschließend oben rechts in der Werkzeugleiste von Xcode den Assistant editor

(siehe Abbildung 1.49).

Abbildung 1.49 Öffnen Sie den »Assistant editor«.

Xcode öffnet nun automatisch neben dem Interface Builder ein weiteres Fenster und

zeigt dort die Datei ViewController.swift an (siehe Abbildung 1.50).

4090-1.book Seite 59 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

60

Abbildung 1.50 Der Interface Builder und der »Assistant editor« nebeneinander

Halten Sie jetzt die (ctrl)-Taste auf Ihrem Mac gedrückt, und ziehen Sie mit gedrückter

Maustaste eine Verbindung vom Label im Interface Builder in den Assistant editor,

und zwar unter die Codezeile, die mit class beginnt (siehe Abbildung 1.51).

Abbildung 1.51 Ziehen Sie eine Verbindung von der Oberfläche in den Code.

4090-1.book Seite 60 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

61

1Lassen Sie die Maustaste dort los, und geben Sie der neuen Verbindung in dem sich öff-

nenden Dialog den Namen »label« (siehe Abbildung 1.52). Über den Button Connect ver-

anlassen Sie Xcode, die Verbindung zu erzeugen und eine neue Zeile Code anzulegen.

Abbildung 1.52 Die Verbindung erhält den Namen »label«.

Sie haben gerade ein sogenanntes Outlet erzeugt. Ein Outlet, übersetzt Ausgang, ist eine

Verbindung vom Code zur Oberfläche einer App. Das Programm kann dieses Outlet

ansprechen. Sie ahnen es bereits: Im Endzustand wird das Label auf der Oberfläche der

App die Zeichenkette »Hallo Welt« anzeigen. Den ersten Schritt dazu haben Sie bereits

erledigt.

Jetzt fehlt noch eine Verbindung, die dem Button Leben einhaucht. Ziehen Sie also

ebenfalls mit gedrückter (ctrl)-Taste eine Verbindung vom Button über die letzte

geschweifte Klammer (siehe Abbildung 1.53).

Abbildung 1.53 Noch eine Verbindung

4090-1.book Seite 61 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

62

Wählen Sie in dem sich öffnenden Dialog oben den Typ Action aus, geben Sie dieser

Action den Namen »button«, und bestätigen Sie den Dialog mit dem Connect-Button

(siehe Abbildung 1.54).

Abbildung 1.54 Eine Action mit dem Namen »button«

Der Inhalt der Datei ViewController.swift sollte nun wie folgt aussehen:

import UIKit

class ViewController: UIViewController {@IBOutlet weak var label: UILabel!

override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from ...

}

override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.

}

@IBAction func button(_ sender: AnyObject) {}

}

Listing 1.1 Die Datei »ViewController.swift«

Schließen Sie nun den Assistant editor, und öffnen Sie anschließend die Datei View-

Controller.swift. Durch die Verknüpfung, die Sie im vorherigen Schritt erstellt haben, hat

Xcode folgenden Methodenrumpf erzeugt:

@IBAction func button(_ sender: AnyObject) {}

Listing 1.2 Der Rumpf der Methode »button:«

4090-1.book Seite 62 Freitag, 2. Dezember 2016 9:00 21

1.4 Die erste App

63

1Die Methode wird aufgerufen, wenn Sie den Button der App betätigen. Es fehlt nun also

nur noch die Anweisung, mit deren Hilfe das Label den Text »Hallo Welt« anzeigt. Dazu

bedienen Sie sich des Outlets label und fügen die folgende Zeile der Methode button:

hinzu:

self.label.text = "Hallo Welt"

Die ganze Methode sieht dann so aus:

@IBAction func button(_ sender: AnyObject) {self.label.text = "Hallo Welt"

}

Listing 1.3 Die Methode »button(_:)« im Endausbau

Jetzt bleibt nicht sehr viel mehr zu tun, als die App zu übersetzen und im Simulator aus-

zuführen. Drücken Sie nach dem Start auf den Button, und sehen Sie, was passiert (siehe

Abbildung 1.55).

Abbildung 1.55 Hallo Welt!

4090-1.book Seite 63 Freitag, 2. Dezember 2016 9:00 21

1 Ein kleiner Schritt …

64

Gratulation, Sie haben soeben Ihr erstes Hallo-Welt-Programm auf dem iPhone pro-

grammiert! War doch gar nicht so schwierig, oder?

Eine kleine Verschönerung sollten Sie allerdings noch vornehmen. Der unbedarfte

Benutzer weiß womöglich nichts mit der App anzufangen. Daher fügen Sie in der Datei

ViewController.swift in der Methode viewDidLoad noch eine Zeile ein, die dem Label den

Text »Bitte Button drücken!« zuweist (in Listing 1.4 fett gedruckt):

override func viewDidLoad() {super.viewDidLoad()self.label.text = "Bitte Button drücken!"

}

Listing 1.4 Die Methode »viewDidLoad«

Wenn Sie die App nun erneut übersetzen und starten, erscheint nach dem Laden

zunächst dieser Text (siehe Abbildung 1.56). Das Auge guckt ja schließlich auch mit!

Abbildung 1.56 Ich habe fertig.

4090-1.book Seite 64 Freitag, 2. Dezember 2016 9:00 21

1.5 Zusammenfassung

65

1Code der Beispiele zum Download

Damit Sie die Listings nicht mühsam abtippen müssen, finden Sie sie auf

www.rheinwerk-verlag.de/4094 zum Download..

1.5 Zusammenfassung

Nach dem Durcharbeiten dieses Kapitels sollten Sie einen Überblick darüber gewonnen

haben, was Sie an Hard- und Software benötigen, um Apps programmieren zu können.

Sie haben das Software Development Kit Xcode und seine wichtigsten Bestandteile ken-

nengelernt und erfahren, wo man sich als Apple-Entwickler registrieren kann, um auf

weiter gehende Dokumentationen und Informationen zugreifen zu können. Und zu

guter Letzt haben Sie Ihre erste App programmiert! Damit sind Sie gut gerüstet, um in

den nächsten Kapiteln tiefer in die App-Programmierung eintauchen zu können.

4090-1.book Seite 65 Freitag, 2. Dezember 2016 9:00 21

197

5

Kapitel 5

An der Oberfläche

»Schlauberger sind verdammt unbeliebt!«

Jack Slater

In diesem Kapitel lernen Sie die wichtigsten Elemente für die Gestaltung einer Benut-

zeroberfläche (GUI) kennen. Dazu zählen verschiedene Ansichtselemente zur Gruppie-

rung und natürlich verschiedene Arten, Daten in einer App anzuzeigen. Das alles haben

wir in einer Beispiel-App verpackt, die Sie bis Kapitel 7 einschließlich kontinuierlich um

Funktionen erweitern werden. Mit der Beispiel-App wird es möglich sein, schöne Orte

(inklusive Foto und nützlichen Informationen wie Datum und Koordinaten) für später

zu speichern.

5.1 Erstellen von Benutzeroberflächen

Bei der Programmierung für einen Desktop-Rechner oder beim Design von Webseiten

hat man als Programmierer viel Platz für den eigenen Gestaltungswillen zur Verfügung.

Der Bildschirm eines Desktop-Rechners ist groß genug, um eine Vielzahl von Funktio-

nen und Elementen auf einer einzelnen Bildschirmseite unterzubringen. Das sieht bei

einem Smartphone ganz anders aus. Die begrenzte Größe des Displays erfordert

Umdenken beim Design von Benutzeroberflächen. In den Anfangszeiten des Apple App

Stores gab es noch unzählige Apps, bei denen die Programmierer ihre althergebrachten

Designideen einfach vom Desktop auf das iPhone transferiert hatten. Das Ergebnis

waren hässliche, kompliziert zu bedienende Apps, bei denen keine rechte Freude auf-

kommen wollte.

Mittlerweile hat sich die Situation aber stark gewandelt, und Apple hat mit seinen

Human Interface Design Guidelines1 eine Dokumentation für angehende iOS-Program-

1 https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig

4090-1.book Seite 197 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

198

Abbildung 5.1 Übersicht der E-Mails in Apples

E-Mail-App

Abbildung 5.2 Eine neue Ansicht: geöffnete

E-Mail

mierer zusammengestellt, in der alle wichtigen Aspekte für das Design ansprechender

Benutzeroberflächen gut erklärt sind.

Die elementarste Neuerung beim Erstellen der Benutzeroberfläche einer App ist der

Umstand, dass eine App in der Regel aus vielen verschiedenen Ansichten, sogenannten

Views, besteht. Jede View erfüllt eine eigene Aufgabe. Denken Sie zum Beispiel an das

E-Mail-Programm auf dem iPhone. Wenn Sie das Programm starten, sehen Sie eine Liste

aller eingegangenen E-Mails (siehe Abbildung 5.1). Öffnen Sie eine E-Mail, wird die Liste

der E-Mails durch diese eine E-Mail überlagert (siehe Abbildung 5.2).

Antworten Sie auf eine geöffnete E-Mail, so erscheint wieder eine neue Ansicht, nämlich

die der geöffneten E-Mail (siehe Abbildung 5.3).

4090-1.book Seite 198 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

199

5

Abbildung 5.3 Für die Antwort eine weitere Ansicht

5.1.1 App-Design mit Storyboards

Um das Erstellen solcher zusammenhängender Benutzeroberflächen zu erleichtern, hat

Apple mit iOS 5 das Storyboard eingeführt. Der Begriff Storyboard kommt ursprünglich

aus dem Filmgeschäft und bedeutet Skizzenbuch. In einem Skizzenbuch gestaltet der

Drehbuchautor durch das Aneinanderreihen von Skizzen die Geschichte eines Films,

ähnlich der Gestaltung eines Comics. Apples Storyboard funktioniert ähnlich. Anstatt

die einzelnen Ansichten einer Benutzeroberfläche unabhängig voneinander zu gestal-

ten und erst im Code zusammenzuführen, so wie es bei der App-Programmierung vor

iOS 5 der Fall war, erlaubt das Storyboard das intuitive und übersichtliche Verknüpfen

von Ansichten im Interface Builder. Sie können im Storyboard einfach neue Ansichten

erzeugen, diese an beliebige Stellen schieben, ganz so wie es Ihnen beim Design der

Benutzeroberfläche in den Sinn kommt (siehe Abbildung 5.4).

4090-1.book Seite 199 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

200

Abbildung 5.4 Ein Storyboard im Interface Builder

GUI-Design anno dunnemals

Es gab und gibt auch noch die Möglichkeit, ein GUI statt mit dem Storyboard über Ein-

zelansichten zusammenzufügen, die sogenannten XIB-Dateien. Zum einen ist dies aber

wenig intuitiv, zum anderen gibt es dafür, außer in speziellen Situationen, keinen

Grund. Wer es ganz ohne grafische Hilfe mag, kann sich ein GUI auch komplett aus dem

Code heraus erzeugen. Aber das ist nichts, was man als Einsteiger machen sollte, denn

der Frustrationsgrad kann dabei sehr schnell sehr hoch werden. Wir verwenden in die-

sem Buch ausschließlich Storyboards.

Erstellen Sie jetzt ein neues Xcode-Projekt. Der im Buch gewählte Name entspricht dem

Namen einer »echten« App, die Sie auch im App Store finden können: Diesen Namen

müssen Sie nicht übernehmen, er ist für das Verständnis der Beispiele nicht relevant,

allerdings erleichtert es die Nachvollziehbarkeit natürlich erheblich, wenn Ihr Code

dem im Buch entspricht.

Als Xcode-Template für die App wählen Sie iOS � Application � Single View Applica-

tion (siehe Abbildung 5.5). Ist Ihnen eigentlich schon aufgefallen, dass es in Xcode

Application und nicht App heißt? Die Wege von Apple sind eben unergründlich …

4090-1.book Seite 200 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

201

5

Abbildung 5.5 Eine neue Single-View-Application

Im nächsten Schritt des Projektassistenten geben Sie der App einen beliebigen Namen

oder übernehmen den von uns gewählten. Wählen Sie als Sprache aber in jedem Fall

Swift aus (siehe Abbildung 5.6).

Abbildung 5.6 Es wird ernst.

4090-1.book Seite 201 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

202

5.1.2 Der Tabbar-Controller

Sobald das GUI einer App mehr als eine View besitzt, empfiehlt sich die Verwendung des

Tabbar-Controllers. Ein Beispiel für die Verwendung des Tabbar-Controllers ist die App-

Store-App vom iPhone. Sie sehen am unteren Bildrand verschiedene Schaltflächen,

über die Sie auf verschiedene Unteransichten wechseln können (siehe Abbildung 5.7).

Abbildung 5.7 Der Tabbar-Controller in der App-Store-App von Apple

Der Tabbar-Controller ist geradezu prädestiniert für das Storyboard, denn darin kann

man bequem die entsprechenden Verbindungen ziehen und editieren.

Löschen Sie den von Xcode automatisch im Storyboard gesetzten View-Controller, und

ziehen Sie aus der Objektbibliothek unten rechts im Xcode-Fenster einen Tab Bar Con-

troller (siehe Abbildung 5.8) in das Storyboard.

4090-1.book Seite 202 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

203

5

Abbildung 5.8 Ein Tabbar-Controller in der Objektbibliothek

Das Storyboard sollte nun aussehen wie in Abbildung 5.9. Markieren Sie den Tabbar-

Controller mit der Maus, und legen Sie dann rechts im Attributes inspector 1 im

Utilities-Bereich (das ist der dritte Inspector von rechts) fest, dass er der Initial View

Controller ist (rechter Pfeil in Abbildung 5.9). Falls der Attributes inspector nicht

angezeigt wird, können Sie ihn über den Menüpunkt View � Utilities � Show Attribu-

tes Inspector öffnen.

Abbildung 5.9 Der Tabbar-Controller im Storyboard

4090-1.book Seite 203 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

204

Views, Controller, View-Controller

Sie haben jetzt von Views gelesen, von Controllern, von Tab-Controllern und von View-

Controllern. Das klingt verwirrender, als es ist. All das gehört in ein Konzept mit der

Bezeichnung Model View Controller (MVC). Die iOS-Programmierung ist auf MVC aufge-

baut. Was sich dahinter verbirgt, erfahren Sie im Abschnitt »MVC« in Abschnitt 6.3.4.

Eine View dient dazu, etwas anzuzeigen. Er ist das, womit der Benutzer interagiert. Eine

View ist auch das, was Sie im Storyboard sehen. Es gibt die simple Ausführung, es gibt

aber auch spezialisierte Ausführungen, wie zum Beispiel eine Tabbar. Die View und alle

weiteren Elemente für die Anzeige und Interaktion gehören zur View-Schicht des MVCs.

Die Datenhaltung einer App und die Berechnung sowie alle weiteren spezifischen Funk-

tionen befinden sich in der Model-Schicht. Der Vermittler zwischen View und Model ist

die Controller-Schicht. Und damit erklärt sich auch der Begriff des View-Controllers

(Tabbar-Controllers etc.). Diese Objekte verbinden die entsprechenden View-Elemente

mit dem Model. Im Storyboard werden Sie daher keine alleinstehenden Views finden,

sondern nur Views in Verbindung mit Controllern, also View-Controller.

Wenn Sie die App nun übersetzen und starten, sehen Sie im Simulator einen Tabbar-

Controller mit zwei Items (siehe Abbildung 5.10).

Abbildung 5.10 Der Tabbar-Controller in Aktion

Im nächsten Schritt ändern Sie die Beschriftung der einzelnen Tabs des Tabbar-Control-

lers. Der Tabbar-Controller, den Sie dem Storyboard hinzugefügt haben, besteht aus

dem eigentlichen Tabbar-Controller und zwei View-Controllern. Das Ändern der Be-

4090-1.book Seite 204 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

205

5

schriftung nehmen Sie nicht direkt im Tabbar-Controller vor, sondern in den jeweiligen

View-Controllern.

Klicken Sie mit der Maus im linken Bereich auf das Tabbar-Item (Item 1), ändern Sie im

Attributes Inspector den Title auf »Schöne Orte«, und drücken Sie (¢) (siehe

Abbildung 5.11).

Abbildung 5.11 Titel des ersten View-Controllers

Diese Änderung wird auch sogleich im Tabbar des Tabbar-Controllers sichtbar (siehe

Abbildung 5.12).

Abbildung 5.12 Das Tabbar-Item mit dem neuen Titel

Ändern Sie anschließend den Titel des zweiten View-Controllers auf die gleiche Weise in

»Über« (siehe Abbildung 5.13).

Abbildung 5.13 Und noch ein neuer Name

4090-1.book Seite 205 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

206

Das sieht aber noch nicht schön aus. Oberhalb der Titel ist noch viel Platz. Dieser Platz

ist für Icons reserviert. Eine iPhone-App ohne ansprechendes GUI wird beim User gna-

denlos durchfallen, daher kommen Sie um die Verwendung schöner Grafiken und Icons

nicht herum.

Wenn Sie schon mit einem Programm wie Photoshop oder Sketch umgehen können,

können Sie Ihre Icons selbst erstellen. Denken Sie dabei unbedingt daran, Ihre Icons

auch auf dem tatsächlichen Gerät zu testen. Sonst laufen Sie Gefahr, dass der Nutzer

nicht erkennen kann, worum es sich dabei handeln soll.

Sie können sich aber auch die Arbeit von professionellen Designern zunutze machen.

Auf Seiten wie http://glyphish.com oder https://thenounproject.com gibt für wenig Geld

Icons oder ganze Icon-Archive zu kaufen. Gerade wenn Sie vorhaben noch weitere Apps

zu erstellen, sollten Sie einmal in ein solches Icon-Archiv investieren. Die Icons können

Sie dann beliebig in Ihren Projekten verwenden.

Grafiken zur App

Um Ihnen die Arbeit zu erleichtern, befinden sich auf der Webseite zum Buch (https://

www.rheinwerk-verlag.de/4094) alle Grafiken der Beispiel-App, so dass Sie die Grafiken

beim Nachprogrammieren ohne Umwege zur Verfügung haben.

Abbildung 5.14 Platzhalter für das App-Icon

4090-1.book Seite 206 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

207

5

Xcode verwendet zur Verwaltung von Icons und Grafiken sogenannte Assets. Das sind

Container, in denen Grafiken abgelegt werden. Laden Sie sich die Grafiken der Beispiel-

App von der Webseite des Buches herunter, und öffnen Sie das Verzeichnis AppIcon im

Finder. Öffnen Sie nun in Xcode den Asset-Katalog, indem Sie die Datei Assets.xcassets

anklicken. Im Asset-Katalog befindet sich schon ein Platzhalter für das App-Icon (siehe

Abbildung 5.14).

Ziehen Sie nun die App-Icon-Dateien aus dem Finder auf die entsprechenden leeren

Stellen. Dabei landet [email protected] beispielsweise auf dem Platz für iPhone Spot-

light - iOS 5,6 Settings - iOS 5-10 29pt, 3x und Icon-29.png auf iPhone Spotlight

- iOS 5,6 Settings - iOS 5-10 29pt, 2x usw. (siehe Abbildung 5.15).

Abbildung 5.15 »Einsortieren« der Grafiken

1x, 2x und 3x steht dabei für die Skalierung. Ein Icon der Größe 40 pt, 3x hat somit eine

Kantenlänge von 120 Pixeln und ist demnach identisch mit einem Icon der Größe 60 pt,

2x. Daher finden Sie im Ordner auch keine Datei mit dem Namen [email protected].

Ziehen Sie im Anschluss den Inhalt des Verzeichnisses AppIcon in den linken Bereich

unterhalb des Icon-Assets (siehe Abbildung 5.16).

4090-1.book Seite 207 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

208

Abbildung 5.16 Hinzufügen der restlichen Icons

Übersetzen und starten Sie die App. Anschließend beenden Sie sie wieder. Wie durch

Zauberhand ist auf dem Simulator nun die App mit einem hübschen Icon zu sehen

(siehe Abbildung 5.17).

Abbildung 5.17 Das neue App-Icon in Aktion

4090-1.book Seite 208 Freitag, 2. Dezember 2016 9:00 21

5.1 Erstellen von Benutzeroberflächen

209

5

Jetzt können Sie die Icons im Storyboard den jeweiligen View-Controllern zuweisen.

Öffnen Sie dazu das Storyboard, und wählen Sie, wie beim Umbenennen der Tabs, den

Tab des ersten oberen View-Controllers aus. Im Utilities-Bereich von Xcode können Sie

dann in den Dropdown-Feldern Image und Selected Image das passende Icon aus-

wählen (star_empty und star_filled, siehe Abbildung 5.18).

Abbildung 5.18 Zuweisen eines Icons zum Tabbar-Item

Wiederholen Sie den Vorgang für den View-Controller Über (info_empty und info_

filled), so dass die Tabbar anschließend wie in Abbildung 5.19 aussieht.

Abbildung 5.19 Die fertige Tabbar

Wie Sie sicher bemerkt haben, haben wir für jedes Tabbar-Item zwei Icons gesetzt, eines

für den Zustand, wenn das Item ausgewählt ist, und eines für den Zustand, wenn es

nicht ausgewählt ist. Diese Herangehensweise ist üblich, und daher finden Sie in den

meisten Icon-Archiven, die Sie im Internet kaufen können, Icons für beide Zustände.

Die Icons für den ausgewählten Zustand sind dabei meist in irgendeiner Art gefüllt. Wie

4090-1.book Seite 209 Freitag, 2. Dezember 2016 9:00 21

5 An der Oberfläche

210

Apple sich das vorstellt mit den Icons, können Sie sich in den mitgelieferten Apps auf

Ihrem iPhone anschauen, wie zum Beispiel in der App-Store-App.

5.2 Der Tableview-Controller

Die wohl meistgenutzte Ansicht für die Darstellung von Daten ist unter iOS die Table-

view. Eine Tableview stellt, wie der Name schon sagt, Daten in einer Tabelle dar. Man

kann von jeder Zeile einer Tabelle in eine Unteransicht verzweigen und auf diese Weise

komplexe Datenstrukturen übersichtlich darstellen. Ein Beispiel für eine Tableview fin-

den Sie in der Einstellungen-App des iPhones (siehe Abbildung 5.20).

Abbildung 5.20 Die Einstellungen sind in einer Tableview organisiert.

Repräsentiert wird eine Tableview von der Klasse UITableView. Diese Klasse werden Sie

nun verwenden, um die Beispiel-App mit Daten anzureichern. Fügen Sie im Storyboard

4090-1.book Seite 210 Freitag, 2. Dezember 2016 9:00 21

Auf einen Blick

Auf einen Blick

1 Ein kleiner Schritt … .................................................................................................. 11

2 Programmierung für Einsteiger und Eingerostete ......................................... 67

3 Von der Idee bis in den App Store – die Theorie ............................................. 135

4 Nachts ist jede Theorie grau .................................................................................. 171

5 An der Oberfläche ...................................................................................................... 197

6 Feinschliff, Testen und Hochladen ...................................................................... 271

7 Zeichnen wie ein Profi .............................................................................................. 333

4090-1.book Seite 3 Freitag, 2. Dezember 2016 9:00 21

5

Inhalt

Vorwort .......................................................................................................................................................... 9

1 Ein kleiner Schritt … 11

1.1 Die Geschichte der Apps ....................................................................................................... 17

1.2 Was brauche ich, um eine App zu programmieren? ................................................ 22

1.2.1 Die Hardware ............................................................................................................. 23

1.2.2 Wie kann ich verschiedene Gebrauchtgeräte vergleichen? ....................... 29

1.2.3 Was brauche ich noch an Hardware? ................................................................ 31

1.2.4 Die Software ............................................................................................................... 32

1.2.5 Und was brauche ich noch? .................................................................................. 33

1.2.6 Die wichtigsten Bestandteile von Xcode .......................................................... 36

1.2.7 Das Apple-Entwicklerprogramm ......................................................................... 39

1.3 Swift: Apples neue Programmiersprache ..................................................................... 43

1.3.1 Das steckt hinter Swift ........................................................................................... 44

1.3.2 Warum eine neue Programmiersprache? ........................................................ 45

1.4 Die erste App ............................................................................................................................. 45

1.4.1 Hallo Welt ................................................................................................................... 51

1.5 Zusammenfassung ................................................................................................................. 65

2 Programmierung für Einsteiger und Eingerostete 67

2.1 Der Playground – mal wieder Kind sein ........................................................................ 68

2.2 Programmieren in Swift ....................................................................................................... 70

2.2.1 Kommentare .............................................................................................................. 70

2.2.2 Datentypen und Variablen .................................................................................... 71

2.2.3 Konstanten ................................................................................................................. 77

2.2.4 Typsicherheit und Typinferenz ............................................................................ 78

2.2.5 Kollektionen ............................................................................................................... 81

2.2.6 Kontrollstrukturen ................................................................................................... 86

2.2.7 Optionale Werte ....................................................................................................... 94

2.2.8 Operatoren ................................................................................................................. 98

4090-1.book Seite 5 Freitag, 2. Dezember 2016 9:00 21

Inhalt

6

2.2.9 Funktionen und Closures ....................................................................................... 100

2.2.10 Klassen, Objekte und objektorientierte Programmierung ......................... 108

2.2.11 Enums und Structs .................................................................................................. 124

2.2.12 Protokolle und Generics ......................................................................................... 128

2.3 Wie wird aus dem Quelltext eine App? ......................................................................... 132

2.3.1 Der Compiler .............................................................................................................. 132

2.3.2 Der Linker .................................................................................................................... 133

2.4 Zusammenfassung ................................................................................................................. 133

3 Von der Idee bis in den App Store – die Theorie 135

3.1 Zehn Regeln für eine erfolgreiche App .......................................................................... 135

3.1.1 Halten Sie sich an Apples Vorgaben .................................................................. 136

3.1.2 Was ist das Alleinstellungsmerkmal meiner App? ....................................... 137

3.1.3 Ist alles sauber programmiert? ........................................................................... 138

3.1.4 Wie gut lässt sich meine App bedienen? ......................................................... 140

3.1.5 Welcher Preis ist angemessen? ........................................................................... 142

3.1.6 Kann ich für regelmäßige Updates sorgen? .................................................... 144

3.1.7 Läuft meine App auch auf anderen iOS-Geräten? ........................................ 144

3.1.8 Wie ernst nehme ich meine Kunden? ............................................................... 145

3.1.9 Wie gut ist meine App ins Netz eingebunden? ............................................. 146

3.1.10 Wie viel Zeit und Geld kann ich in Werbung und das

Marketing stecken? ................................................................................................. 147

3.2 Das geht gar nicht – einige No-Gos der App-Programmierung ......................... 147

3.3 Apple, der Türsteher – welche Bedingungen muss eine App erfüllen? .......... 149

3.3.1 Apps, die Sie sich sparen können zu programmieren .................................. 151

3.3.2 Warum Sie sich besondere Mühe geben sollten ........................................... 153

3.3.3 Nicht nur auf die App selbst kommt es an ...................................................... 154

3.3.4 Hier kennt Apple kein Pardon .............................................................................. 156

3.3.5 Wann wird Apple richtig sauer? .......................................................................... 156

3.3.6 Apple und der erhobene Zeigefinger ................................................................. 156

3.3.7 Was tun, wenn meine App abgelehnt wurde? ............................................... 159

3.4 Geld verdienen mit Apps ..................................................................................................... 160

3.4.1 Auf in den Massenmarkt! ...................................................................................... 160

3.4.2 Erst anfixen, dann kassieren ................................................................................ 161

3.4.3 Spezialsoftware für Unternehmen & Co. ........................................................ 162

4090-1.book Seite 6 Freitag, 2. Dezember 2016 9:00 21

Inhalt

7

3.4.4 Geld verdienen mit Werbung ............................................................................... 163

3.4.5 Und sonst? .................................................................................................................. 164

3.5 Wie vermarkte ich eine App? ............................................................................................. 165

3.5.1 In die Öffentlichkeit mit Blogs & Co. ................................................................. 166

3.5.2 Die Sache mit den Promocodes ........................................................................... 167

3.5.3 Anlocken via Twitter und Facebook ................................................................... 168

3.5.4 Anlocken mit Preissenkungen und Lite-Versionen ....................................... 169

3.6 Zusammenfassung ................................................................................................................. 170

4 Nachts ist jede Theorie grau 171

4.1 Das Fundament ........................................................................................................................ 171

4.1.1 Die Ursprünge von iOS ............................................................................................ 174

4.1.2 Meilensteine der Entwicklung – von iOS 1 bis iOS 10 .................................. 177

4.1.3 Vom Ur-iPhone bis in die Gegenwart ................................................................ 182

4.1.4 Die iPad-Familie ........................................................................................................ 187

4.1.5 Auf welcher Hardware läuft iOS eigentlich? ................................................... 191

4.2 Aufbau von iOS ......................................................................................................................... 192

4.2.1 Core OS ......................................................................................................................... 193

4.2.2 Core Services .............................................................................................................. 194

4.2.3 Media ............................................................................................................................ 195

4.2.4 Cocoa Touch ............................................................................................................... 195

5 An der Oberfläche 197

5.1 Erstellen von Benutzeroberflächen ................................................................................. 197

5.1.1 App-Design mit Storyboards ................................................................................ 199

5.1.2 Der Tabbar-Controller ............................................................................................. 202

5.2 Der Tableview-Controller ..................................................................................................... 210

5.2.1 Design mit dem View-Controller ........................................................................ 215

5.2.2 Die Datenquelle ........................................................................................................ 218

5.2.3 Eingabemasken ......................................................................................................... 226

5.2.4 Eine schönere Liste ................................................................................................... 267

5.3 Zusammenfassung ................................................................................................................. 269

4090-1.book Seite 7 Freitag, 2. Dezember 2016 9:00 21

Inhalt

8

6 Feinschliff, Testen und Hochladen 271

6.1 Karten und die Außenwelt .................................................................................................. 271

6.1.1 Karten verwenden mit dem MapKit .................................................................. 271

6.1.2 Webseiten an Safari weiterreichen ................................................................... 283

6.1.3 Teilen nach Twitter .................................................................................................. 286

6.2 Die Uhr ......................................................................................................................................... 290

6.2.1 Erstellen eine Watch-App ...................................................................................... 290

6.2.2 Benutzeroberflächen für die Apple Watch ...................................................... 294

6.2.3 Kommunikation zwischen iPhone und Watch ............................................... 297

6.3 Arbeit auf dem Gerät ............................................................................................................. 305

6.3.1 Test auf dem eigenen Gerät ................................................................................. 306

6.3.2 Beschleunigungssensor ......................................................................................... 311

6.3.3 Die Kamera ................................................................................................................. 317

6.3.4 Ein bisschen Theorie zum Abschluss ................................................................. 318

6.4 App in den App Store ............................................................................................................. 322

6.4.1 So kommt die App in den App Store .................................................................. 322

6.4.2 So geht’s weiter: Hilfen aus dem Netz und von außerhalb ....................... 330

6.5 Zusammenfassung ................................................................................................................. 332

7 Zeichnen wie ein Profi 333

7.1 Die Wasserwaage .................................................................................................................... 334

7.1.1 Die UIView .................................................................................................................. 336

7.1.2 Zeichnen mit CoreGraphics .................................................................................. 346

7.1.3 Die y-Achse ................................................................................................................. 348

7.1.4 Die x-Achse ................................................................................................................. 352

7.1.5 Der Mittelpunkt ........................................................................................................ 353

7.1.6 Es kommt Bewegung in die Sache ..................................................................... 356

7.2 Zusammenfassung ................................................................................................................. 358

Glossar ........................................................................................................................................................... 361

Index ............................................................................................................................................................... 365

IVZ.fm Seite 8 Dienstag, 6. Dezember 2016 4:04 16

Index

365

Index

3D-Touch ..................................................................... 187

A

A2DP ............................................................................. 178

Ablehnung .................................................................. 159

Acceset-Katalog ........................................................ 304

Achsen .......................................................................... 313

Addition ........................................................................ 99

Address Book Framework .................................... 194

Adressbuch ................................................................. 177

aGPS .............................................................................. 194

AirPlay .......................................................................... 178

AirPrint ........................................................................ 178

Akku ................................................................................ 29

Align-Button ................................................................ 58

Alkohol ......................................................................... 159

Alleinstellungsmerkmal ....................................... 137

Altersfreigabe ............................................................ 329

Android ................................................................. 13, 150

Anfänger ........................................................................ 67

APIs .................................................................................. 37

App ........................................................................... 11, 45

App Review Board ................................................... 159

App Store ............................................. 12, 34, 135, 322

App Store Review Guidelines .................... 136, 150

App-Beschreibung ................................................... 145

App-Design ................................................................. 199

App-ID .......................................................................... 324

AppKit .......................................................................... 196

Apple Developer Program ...................... 33, 39, 306

Apple Maps ................................................................. 179

Apple TV ............................................ 23, 175, 191, 290

Apple Watch ........................................................ 23, 290

Apple-Entwicklerprogramm ................................. 39

Apple-ID ................................................................ 41, 309

Application-Context ............................................... 298

APSL .............................................................................. 175

Aqua .............................................................................. 175

Äquivalenzoperator ................................................ 127

ARC ................................................................................ 123

Archive ......................................................................... 326

ARM ............................................................................... 174

Array ...................................................................... 81, 223

Assets ............................................................................ 207

Assistant editor ................................................. 59, 231

AT&T ............................................................................. 174

Attributes inspector ..................................... 215, 218

Aufenthaltsort .......................................................... 254

Ausgabebereich ........................................................... 69

Ausschlusskriterien ................................................ 152

Auto Layout Constraints ...................................... 236

Autolayout .................................................................... 57

Automatic Reference Counting � ARC

B

Bar-Button-Item ....................................................... 227

Baseband ..................................................................... 171

Bauplan ........................................................................ 109

Beispiel-App ............................................................... 197

Benchmark .................................................................... 30

Benutzeroberfläche ................................................ 197

Benutzerschnittstelle ............................................. 140

Berners-Lee, Tim ......................................................... 32

Beschleunigungssensor ........................................ 311

Bewegungsprofil ...................................................... 254

Bildergalerie ............................................................... 261

Bildschirmdesign .................................................... 140

Binärdatei ................................................................... 132

Blogs ............................................................................. 166

Bluetooth ....................................................................... 25

Bonjour ........................................................................ 193

Bool .................................................................................. 76

BootCamp ...................................................................... 26

Bounds ......................................................................... 347

break ................................................................................ 93

BSD ................................................................................ 174

Bundespost ................................................................... 45

Bundle-ID .................................................................... 324

Button ............................................................................. 54

C

C ...................................................................................... 194

C++ ................................................................................. 175

Cell ................................................................................. 218

4090-1.book Seite 365 Freitag, 2. Dezember 2016 9:00 21

Index

366

CFNetwork .................................................................. 194

CGContext .................................................................. 347

CGRect ......................................................................... 347

Cisco ............................................................................. 176

CLLocationManager ............................................... 253

Closures .............................................................. 100, 106

CMAcceleration ........................................................ 316

Cocoa ............................................................................... 70

Cocoa Touch .................................... 70, 123, 177, 195

Compiler ..................................................................... 132

Computer ...................................................................... 45

Content Hugging Priority .................................... 275

continue ......................................................................... 93

Controller .......................................................... 204, 319

Cook, Tim ................................................................ 12, 15

Copyright ....................................................................... 35

Core Animation ....................................................... 195

Core Foundation ...................................................... 194

Core Location ............................................................ 194

Core Motion Framework ...................................... 311

Core OS ........................................................................ 193

Core Services ............................................................. 194

CoreGraphics-Framework .................................... 334

CoreLocation ............................................................. 219

CPU ................................................................................... 20

Crash ................................................................................ 95

Custom UI Elements .............................................. 140

Cydia ...................................................................... 15, 150

D

Darwin ......................................................................... 175

Date ........................................................................ 70, 221

Dateisystem ........................................................ 37, 245

Datei-URL ................................................................... 246

Daten ............................................................................ 210

Datenkapselung ....................................................... 113

Datenquelle ............................................................... 218

Datentyp ........................................................................ 71

Debugging .................................................................. 126

Deckkraft .................................................................... 349

Default UI Elements ............................................... 140

Delegate-Pattern ...................................................... 253

Delegation ......................................................... 306, 321

Design .......................................................................... 215

Desktop .............................................................. 192, 197

Devices ........................................................................ 307

Dezimaltrennzeichen ............................................... 76

Dictionary ..................................................................... 83

Display ........................................................... 25, 26, 191

Division ....................................................................... 100

DNS ............................................................................... 193

Double ............................................................................ 76

drawRect ..................................................................... 346

Drogen ......................................................................... 159

Duke Nukem ................................................................ 12

E

Eigenschaft ................................................................ 116

Einfügen ...................................................................... 177

Eingabemasken ........................................................ 226

El Capitan ...................................................................... 23

else if ............................................................................... 87

E-Mail-Programm ................................................... 198

Embed In ............................................................ 226, 229

Englisch .......................................................................... 33

Entwicklerforum ..................................................... 330

Entwicklerkonferenz � WWDC

Entwurfsmuster .............................................. 306, 319

Enums .......................................................................... 124

Erinnerungsfunktion ............................................ 178

Erlaubnis ..................................................................... 254

Extension ................................................................... 300

F

Facebook .................................................. 146, 168, 179

FaceTime .................................................. 178, 179, 189

Familienfreigabe ..................................................... 181

Fehlerbehandlung .................................................. 246

Fehlermeldung ......................................................... 310

Festplatte ....................................................................... 25

FileManager .................................................................. 70

File-Transfer .............................................................. 298

Float ................................................................................. 76

Follower ...................................................................... 271

for ..................................................................................... 89

Fotobibliothek .......................................................... 317

Foundation-Framework .......................................... 69

Frame ........................................................................... 347

Frameworks ............................................................... 193

Frontkamera ............................................................. 189

Funktionen ................................................................ 100

4090-1.book Seite 366 Freitag, 2. Dezember 2016 9:00 21

Index

367

G

Game Center .................................... 21, 156, 178, 324

Game Kit ...................................................................... 196

Geld ............................................................................... 160

Generics ....................................................................... 130

Genre ............................................................................ 155

Geschichte .................................................................... 17

Gesten .......................................................................... 195

Gewaltszenen ............................................................ 159

Giftschrank ................................................................... 95

GPS ................................................................ 21, 183, 194

GPU .................................................................................. 20

Grafik ............................................................................ 206

Grafikkontext ............................................................ 347

Grafikprogrammierung ........................................ 333

Gravitation ................................................................. 313

Guard ............................................................................ 106

GUI ................................................................................... 51

H

H.264 ............................................................................. 195

Hallo Welt ..................................................................... 51

Handbuch ..................................................................... 44

Hardware ....................................................................... 31

HDMI .............................................................................. 24

Hilfslinien ..................................................................... 54

Homescreen ............................................................... 177

Human Interface Design Guidelines ............... 197

I

I Am Rich ....................................................................... 19

iAd ........................................................................ 164, 178

iChat .............................................................................. 195

iCloud ................................................................. 146, 179

IDE .................................................................................... 32

Identifier ..................................................................... 218

if else ............................................................................... 86

iMac .......................................................................... 25, 26

iMessage ...................................................................... 178

In-App-Käufe ................................................... 162, 324

IndexPath ................................................................... 280

Info.plist ...................................................................... 254

Initialisierer ............................................................... 114

init-Methode ................................................... 114, 220

Instruments .................................................................. 37

Int ...................................................................................... 74

Integer ............................................................................. 74

Intel-Prozessoren ....................................................... 23

Interface Builder ........................................ 37, 51, 199

Intermediate Representation ............................. 132

Internet ........................................................................... 25

iOS ........................................................ 21, 109, 174, 192

iOS Human Interface Guidelines ............ 140, 154

iPad ............................................... 13, 22, 144, 187, 188

iPad Air ........................................................................ 189

iPad mini ..................................................................... 190

iPad Pro ....................................................................... 191

iPhone .................................................. 17, 22, 182, 197

iPhone 3G ............................................................. 18, 183

iPhone 3GS ................................................................. 183

iPhone 4 ....................................................................... 183

iPhone 4S .................................................................... 184

iPhone 5 ....................................................................... 184

iPhone 5C .................................................................... 184

iPhone 5S ..................................................................... 184

iPhone 6 ...................................................................... 185

iPhone 6 plus ............................................................. 185

iPhone 6s .................................................................... 187

iPhone 6s plus ........................................................... 187

iPhone 7 ....................................................................... 187

iPhone 7 plus ............................................................. 187

iPhone OS ......................................................... 174, 175

iPhone SE .................................................................... 187

iTunes Connect ......................................................... 328

Ive, Jonathan .............................................................. 180

iZombie ....................................................................... 150

J

Jahresbeitrag ................................................................ 40

Jailbreak .......................................................................... 15

Jobs, Steve .................................................. 32, 174, 175

JPG ................................................................................. 266

K

Kamera ............................................................... 261, 317

Karten ........................................................................... 271

Kategorie ..................................................................... 155

Kernel ........................................................................... 192

Keywords .................................................................... 155

4090-1.book Seite 367 Freitag, 2. Dezember 2016 9:00 21

Index

368

Kippen ......................................................................... 195

Klasse .................................................................. 109, 210

Kollektionen ................................................................. 81

Kommentare ................................................................ 70

Konfiguration ........................................................... 255

Konsole ................................................................. 83, 243

Konstanten ................................................................... 77

Kontrollcenter ............................................................. 21

Kontrollstrukturen .................................................... 86

Koordinaten .............................................................. 253

Kopieren ..................................................................... 177

Kreditkarte ................................................... 41, 42, 307

L

Label ................................................................................ 54

Laptop ............................................................................. 29

Lattner, Chris ............................................................. 132

Laufzeit ........................................................................... 78

LED ................................................................................... 18

Leistung .......................................................................... 29

Lightning ........................................................... 184, 189

Linker ........................................................................... 133

Lite ................................................................................. 169

Lizenzbedingungen ................................................... 42

LLVM ............................................................................ 132

LTE ................................................................................. 184

M

Mac ............................................................................ 23, 60

Mac mini ................................................................. 23, 24

Mac Pro ........................................................................... 26

MacBook ........................................................................ 28

MacBook Air ................................................................. 28

MacBook Pro ................................................................ 28

Mach ............................................................................. 175

Macintosh .............................................................. 24, 32

macOS ..................................................... 23, 32, 34, 174

Mainboard ..................................................................... 25

MapKit ...................................................... 196, 271, 278

Marketing .......................................................... 147, 161

Massenmarkt ............................................................ 160

Maus ................................................................................ 25

Media ........................................................................... 195

Media Player Framework ..................................... 195

Member Center ........................................................ 323

Messages ..................................................................... 298

MessageUI-Framework ......................................... 196

Metadaten .................................................................. 155

Metal ............................................................................... 21

Methode ...................................................................... 109

Microsoft .................................................... 13, 172, 193

Mikrofon ..................................................................... 189

Mikrokernel ............................................................... 175

Minderjährige ........................................................... 159

Mitteilungszentrale ............................................... 178

MKMapView .............................................................. 278

MMS ............................................................................. 177

Model ........................................................................... 319

Model View Controller � MVC

MPEG-4 ........................................................................ 195

Multiplikation .......................................................... 100

Multitasking .............................................................. 178

Multitouch ........................................................ 172, 195

MVC .................................................. 204, 216, 306, 319

N

Navigationbar ........................................................... 227

Navigationsleiste ........................................... 227, 239

NDA .............................................................................. 307

Netz ............................................................................... 146

NeXT ...................................................................... 32, 175

NeXTStep ............................................................. 32, 175

Night Shift .................................................................. 181

No-Gos ......................................................................... 147

Non Disclosure Agreement � NDA

Notifications ............................................................. 322

NSObject ..................................................................... 196

O

Objective-C ......................................................... 32, 175

Objektbibliothek .............................................. 52, 202

Objekte ........................................................................ 108

Objektorientierte Programmierung ................ 109

OLED ............................................................................. 294

Open Source ................................................................. 45

OpenAL ........................................................................ 195

OpenGL ES .................................................................. 195

OpenSSL ...................................................................... 195

OpenStep .................................................................... 175

Operatoren ................................................................... 98

4090-1.book Seite 368 Freitag, 2. Dezember 2016 9:00 21

Index

369

Optional

auspacken ................................................................. 95

Optional Chaining ................................................... 258

Optionale Werte ......................................................... 94

Organization Identifier ........................................... 48

Organization Name .................................................. 48

Organizer .................................................................... 307

OS X ................................................................................. 23

osxentwicklerforum ............................................... 331

Outlet .............................................................................. 61

override ....................................................................... 120

P

Parameter ......................................................... 102, 220

Photoshop .................................................................. 206

Pin-Button ........................................................... 58, 236

Placeholder ................................................................. 239

Play Store ...................................................................... 13

Play-Button .................................................................. 69

Playground ................................................................... 68

Plist ................................................................................ 243

Pocket-PC .................................................................... 172

POSIX ............................................................................ 193

PowerPC ........................................................................ 23

Preis ..................................................................... 142, 148

Pressearbeit ................................................................ 165

print() .............................................................................. 86

Product Name ............................................................. 48

Programmcode ........................................................... 37

Programmierung ....................................................... 67

Project Builder .......................................................... 177

Promotional Codes ................................................. 167

Property ....................................................................... 109

Property List � Plist

Protokoll ...................................................................... 128

Provisioning Profile ................................................ 325

Prozessor ....................................................................... 30

Prüfungen ..................................................................... 17

Pseudocode ................................................................ 109

Punktnotation .......................................................... 114

Q

Quartz ........................................................................... 195

Quellcode ...................................................................... 70

Quelltext ................................................................ 69, 70

R

repeat while .................................................................. 92

Retina .................................................................... 26, 183

RGB ................................................................................ 349

Rhapsody .................................................................... 175

Ritchie, Dennis .......................................................... 174

Röhrenmonitor ........................................................... 26

Rückgabewert ............................................................ 102

Run-Button ................................................................... 49

S

Safari ............................................................................. 283

Scheme ........................................................................ 293

Schichten .................................................................... 319

Schlüsselbundverwaltung ................................... 322

Schlüssel-Wert-Paar ................................................... 84

Schreibweise .............................................................. 106

Schütteln ..................................................................... 195

Screendesign ............................................................. 148

Screenshots ...................................................... 145, 327

SDK ................................................................................... 32

Security Framework ............................................... 194

Segue .................................................................. 272, 279

self ................................................................................. 115

Sensoren ..................................................................... 305

Set ..................................................................................... 85

Sicherheitsmechanismen ....................................... 15

Sierra ................................................................................ 23

Signieren ..................................................................... 310

Simulator ................................................................ 32, 37

Siri ........................................................................... 21, 184

Size Classes ................................................................. 336

Sketch ........................................................................... 206

Skizzenbuch ............................................................... 199

SKU ................................................................................ 328

Smart Watch .............................................................. 290

Smartphone ..................................................... 142, 171

SMS ................................................................................ 171

Social Framework .................................................... 287

Sockets ......................................................................... 193

Sourcecode .................................................................... 70

Spamming .................................................................. 156

Speicherverbrauch ..................................................... 37

Speicherverwaltung ............................................... 123

Spezialsoftware ........................................................ 162

4090-1.book Seite 369 Freitag, 2. Dezember 2016 9:00 21

Index

370

Spiele ............................................................................... 19

Springboard ............................................................... 193

SQLite ........................................................................... 194

Stack-Button .............................................................. 273

Stack-View .................................................................. 273

Standardwert ............................................................ 220

Standort ...................................................................... 253

static ............................................................................. 250

Statusbar ..................................................................... 229

Statusleiste ................................................................. 229

Stop-Button ........................................................... 51, 69

Storyboard ................................................................. 199

String ............................................................................... 72

Structs ................................................................. 124, 219

Subklasse .................................................................... 116

Subtraktion ................................................................... 99

Superklasse ................................................................ 116

Swift ......................................................... 32, 43, 67, 109

switch .............................................................................. 88

Swype ........................................................................... 181

T

Tab ................................................................................. 214

Tabbar ....................................................... 202, 214, 215

Table View Cell ......................................................... 218

Table View Controller ............................................ 211

Tablet ..................................................................... 13, 191

Tableview .................................................................... 210

Target ........................................................................... 290

Taschenlampe .............................................................. 18

Tastatur .......................................................................... 25

Team ............................................................................. 309

Telefon ......................................................................... 171

Telefonnummer ...................................................... 284

Telekom ......................................................................... 45

Test ................................................................................ 306

TestFlight .................................................................... 139

Textfeld ....................................................................... 234

Thompson, Ken ........................................................ 174

Topcharts .................................................................... 142

Türsteher .................................................................... 149

tvOS .............................................................................. 192

Twitter .......................... 146, 168, 178, 179, 271, 286

Type-Methode .......................................................... 250

Typinferenz .................................................................. 78

Typsicherheit ............................................................... 78

U

Übersetzungszeit ....................................................... 78

UIImagePickerController ..................................... 261

UIKit ............................................................................. 196

UIKit-Framework ....................................................... 69

UITableView .............................................................. 210

UITableViewController ......................................... 216

UITableViewDelegate ............................................ 261

UIViewController .................................................... 232

UMTS ............................................................................ 183

Unix .............................................................................. 174

Unix V1 ........................................................................ 174

unsigned ........................................................................ 74

Unteransichten ........................................................ 202

Update ......................................................................... 144

Upload ......................................................................... 329

USB ................................................................................... 24

User Interface .................................................... 37, 140

User-Info ..................................................................... 298

Utilities ................................................................. 52, 203

V

Variablen ....................................................................... 71

Vererbung .................................................................. 116

Vergleichsoperator .................................................... 98

Vermarktung ............................................................ 147

View ........................................................... 198, 204, 319

View-Controller .............................................. 204, 213

viewDidAppear ........................................................ 256

viewDidLoad ................................................................ 64

Volume Purchasing ................................................ 163

W

WatchConnectivity Framework ........................ 297

watchOS ............................................................. 192, 290

Watch-Simulator ..................................................... 293

WCSession .................................................................. 298

WCSessionDelegate ................................................ 299

Webseite ..................................................................... 283

Werbung .................................................. 147, 148, 163

Werkzeugleiste ............................................................ 49

Wertebereich ................................................................ 75

while ................................................................................ 92

Windows .............................................................. 26, 140

4090-1.book Seite 370 Freitag, 2. Dezember 2016 9:00 21

Index

371

Windows Phone Store ............................................. 13

WKInterfaceController .......................................... 294

WLAN .............................................................................. 25

WPS ................................................................................ 194

WWDC ............................................................................ 67

X

Xcode ...................................... 32, 33, 35, 45, 144, 215

XIB .................................................................................. 200

Z

Zeile ............................................................................... 224

Zeitstempel ................................................................ 266

Zensur .......................................................................... 137

Zertifikat ............................................................ 322, 323

Zertifikatsassistent ................................................. 322

Zigaretten ................................................................... 159

Zulassungsrichtlinien ............................................ 137

Zuweisungsoperator ................................................. 98

4090-1.book Seite 371 Freitag, 2. Dezember 2016 9:00 21

Jörg Brunsmann, Dominik Hauser, Klaus M. Rodewig

Apps programmieren mit Swift – Ideal für Programmiereinsteiger371 Seiten, broschiert, Dezember 2016 29,90 Euro, ISBN 978-3-8362-4090-1

www.rheinwerk-verlag.de/4094

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel-lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.

Teilen Sie Ihre Leseerfahrung mit uns!

Jörg Brunsmann ist Journalist und arbeitet in der Wirt-schaftsredaktion beim WDR. Dort moderiert er unter anderem das Morgenecho und die Sendung »Profit«. Außerdem schreibt er Einsteigerbücher und ist Gesprächs-partner für Computerthemen bei WDR 2, 1 Live und Funkhaus Europa.

Dominik Hauser ist promovierter Physiker und iOS-Ent-wickler. Er hat bereits zahlreiche Apps im App Store ver-öffentlicht, unter anderem die beliebte Formelsammlung »Phy«. Zurzeit arbeitet er hauptberuflich für die Energy App Provider GmbH, die Apps für Energieanbieter ent- wickelt.

Klaus M. Rodewig ist seit 20 Jahren Software-Entwickler und arbeitet als Entwicklungsleiter in einer Software-Firma. Er ist Mitglied im »Expertenrat Cyber-Sicherheit« des Bun-desamtes für Sicherheit in der Informationstechnik und hält regelmäßig Vorträge zu App-Entwicklung und IT-Sicherheit.

Wissen, wie’s geht.