21
Praktikum – iOS-Entwicklung Wintersemester 2019/20 Prof. Dr. Linnhoff-Popien Markus Friedrich, Christoph Roch 16.10.2019 Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung WS19/20 1

Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Praktikum – iOS-EntwicklungWintersemester 2019/20

Prof. Dr. Linnhoff-Popien

Markus Friedrich, Christoph Roch

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/201

Page 2: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

CrashkursXCode, Projektgrundgerüst, App-Zustände, Views und ViewController

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/202

Page 3: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

XCode

XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt:

• Software Development Kit (SDK)

• Code Editor

• UI Editor

• Debugging Tools

• Simulator

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/203

Page 4: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Ein neues Projekt anlegen

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/204

Page 5: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/205

Poject-Navigator Project-Editor Utilities

Page 6: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Neues Projekt: Single View Application

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/206

• XCode generiert beim anlegen eines neuen Projekts initiale Files:

• AppDelegate.swift

• ViewController.swift

• Main.storyboard

• …

Page 7: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Bestandteile einer iOS-App

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/207

Mehr zumModel-View-Controller Pattern in Kürze.

https://developer.apple.com

Page 8: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Der AppDelegate

• Der AppDelegate ist ein Singleton und das erste customisierbare Objekt einer iOS App.

• AppDelegate ist „Ansprechpartner“ des Betriebssystems für einige wichtige Events.

• AppDelegate ist der Delegate der Application.

• Das Delegation Pattern ist zentral in iOS und findet an vielen Stellen Verwendung.

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/208

Page 9: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Einschub: Das Delegation Pattern

• Delegation ist ein Pattern der Objekt-Orientierten Programmierung um Objekt-Komposition zu unterstützen.

• Bei Delegation behandelt ein Objekt A eine Anfrage indem es an ein weiteres Objekt B delegiert.

• In Swift wird Delegation durch die Verwendung von Protokollen unterstützt.

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/209

A Bdelegaterequest

Page 10: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Protokolle in Swift

• Protokolle sind ähnlich zu Interfaces in z.B. Java.

• Eine Klasse (oder Struktur) kann Protokoll konform sein d.h. die Anforderungen des Protokolls werden umgesetzt.

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2010

protocol SomeProtocol {

// protocol definition goes here

func requiredFunction()

}

class SomeClass: SomeProtocol{

func requiredFunction() {

print("Have to do that")

}

}

Page 11: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Protokolle und Delegation

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2011

protocol Assistant {

func writeEmail()

}

Page 12: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Protokolle und Delegation

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2012

protocol Assistant {

func writeEmail()

}

class WorkerA : Assistant {

func writeEmail() {

print("WorkerA: I wrote an Email!")

}

}

Page 13: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Protokolle und Delegation

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2013

protocol Assistant {

func writeEmail()

}

class WorkerA : Assistant {

func writeEmail() {

print("WorkerA: I wrote an Email!")

}

}

class Boss {

var delegate : Assistant?

func work(){

print("Boss: I have no time to write Emails!“)

delegate?.writeEmail()

}

}

Page 14: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Protokolle und Delegation

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2014

let boss = Boss()

let worker = WorkerA()

boss.delegate = worker

boss.work()

// Boss: I have no time to write Emails!

// WorkerA: I wrote an Email!

Page 15: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

AppDelegate als Delegate der Application

• AppDelegate ist der Delegate der Application.

• Das bedeutet konkret, dass er UIApplicationDelegate konform ist.

• Eine wichtige Verantwortlichkeit, die der AppDelegate übernimmt ist das Reagieren auf Zustands-Transitionen der App.

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2015

Page 16: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

App Zustands-Transition

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2016

User drückt Home Button

1.

2.

3.

MyApp

Page 17: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

App Zustands-Transition

• Wenn die App in den Zustand ‚Background‘ übergeht müssen u.U. noch…

• …Daten gesichert werden.

• …Speicher freigegeben werden (reduce memory footprint).

• Die letzte Chance dazu ergibt sich in der applicationDidEnterBackground(_:) Methode des AppDelegate

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2017

Home Button Press

Page 19: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Views

• Eine App besteht aus einer Menge von Views durch die der Nutzer navigieren kann.

• Views zeigen aber lediglich Daten an.

• Daten kommen aus Modell und werden vom ViewController übermittelt.

• Benutzerinteraktion wird vom ViewController interpretiert und an das Model übermittelt.

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2019

Page 20: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

ViewController

• Jede View hat einen zugehörigen Controller -> ViewController

• ViewController sind zentrale Objekte für die iOS-Programmierung und übernehmen viele wichtige Aufgaben.

• Geben eine bewährte Struktur vor für die Gestaltung eines Interface.

• Viele verschiedene ViewControllerTypen, die sofort verwendet werden können (NavigationView, TableView, CollectionView, etc.).

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2020

Page 21: Praktikum – iOS-Entwicklung · XCode beinhaltet im Grunde schon alles was man zum Entwickeln von iOS-Apps benötigt: • Software Development Kit (SDK) • Code Editor • UI Editor

Beispiel: SimpleApp – Live Coding

Einfache App mit grundlegenden UI-Elementen:

• Label

• Button

• Textfield

• …

16.10.2019Markus Friedrich, Christoph Roch - Praktikum iOS-Entwicklung

WS19/2021