softwareprojekt: mobile development einführung objective-c · 2010. 4. 22. · softwareprojekt:...

58
Softwareprojekt: Mobile Development Einführung Objective-C Miao Wang, Tinosch Ganjineh Freie Universität Berlin, Institut für Informatik 21.04.2010

Upload: others

Post on 25-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

Softwareprojekt: Mobile DevelopmentEinführung Objective-C

Miao Wang, Tinosch GanjinehFreie Universität Berlin, Institut für Informatik

21.04.2010

Page 2: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

2Softwareprojekt: Mobile Development, Sommersemester 2010

Agenda

• Organisatorisches• Objective-C Basics (*)• Cocoa Touch Basics (*)• Live-Demo

• (*) basierend auf Material von RWTH Aachen

Page 3: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

3Softwareprojekt: Mobile Development, Sommersemester 2010

Organisatorisches

• Zedat Schulungsraum Tornado• Benutzung mit Zedat-Account

• Speichern im Heimatbereich kann fehlschlagen wegen Sonderzeichen• Speichermöglichkeiten über /tmp, wird täglich gelöscht• Wenn möglich, Daten extern speichern• Netzlaufwerk wird zur Verfügung gestellt (tragt euch auf den Zettel ein)

• Programme:• Xcode: /Developer/Applications/Xcode• Interface Builder: /Developer/Applications/Interface Builder• Instruments: /Developer/Applications/Instruments• iPhone Simulator:

/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhoneSimulator

Page 4: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

4Softwareprojekt: Mobile Development, Sommersemester 2010

Organisatorisches

• Subversion Repository• Ort: https://secure.progra.de/svn/appirion/MobileDevelopment/• Benutzername: student• Passwort: siehe Mailingliste

• svn ist vorinstalliert auf den Zedat Rechner• Auschecken:

svn co https://secure.progra.de/svn/appirion/MobileDevelopment/ --username student

• Unterordner für Projekt erstellen• Build-Ordner nicht einchecken, keine Build-Dateien einchecken!

• Lesen aus anderen Projekten erlaubt• Übernehmen von Code nach Anfrage• Modifizieren von fremden Projekten nicht erlaubt

Page 5: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

5Softwareprojekt: Mobile Development, Sommersemester 2010

Objective-C Basics

Page 6: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

6Softwareprojekt: Mobile Development, Sommersemester 2010

Organisatorisches

• Superset of C• can be mixed with C and C++

• Protocols• Single inheritance• Categories define behavior across classes• Dynamic runtime• Strongly typed, but loosely use of types possible

• Major differences to C• New types

• Anonymous object• Class• Class Definition

• Object Messaging• Selector• Properties• Enumeration

Page 7: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

7Softwareprojekt: Mobile Development, Sommersemester 2010

New Types

Page 8: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

8Softwareprojekt: Mobile Development, Sommersemester 2010

Identity vs. Equality

Page 9: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

9Softwareprojekt: Mobile Development, Sommersemester 2010

Object Messaging

Page 10: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

10Softwareprojekt: Mobile Development, Sommersemester 2010

Object Messaging

Each argument has a description:

[receiver methodWithArgument1:(<Typ>)arg1 andArgument2:(<Typ>)arg2];

Page 11: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

11Softwareprojekt: Mobile Development, Sommersemester 2010

Selector

Page 12: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

12Softwareprojekt: Mobile Development, Sommersemester 2010

Advantages of Object Messaging

Example 1: Late Binding

Page 13: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

13Softwareprojekt: Mobile Development, Sommersemester 2010

Advantages of Object Messaging

Example 2: SelectorFromString

Page 14: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

14Softwareprojekt: Mobile Development, Sommersemester 2010

Header and Implementation

Page 15: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

15Softwareprojekt: Mobile Development, Sommersemester 2010

Header

Page 16: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

16Softwareprojekt: Mobile Development, Sommersemester 2010

Implementation

Page 17: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

17Softwareprojekt: Mobile Development, Sommersemester 2010

Class Instantiation

Page 18: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

18Softwareprojekt: Mobile Development, Sommersemester 2010

Class Variables and Methods

Page 19: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

19Softwareprojekt: Mobile Development, Sommersemester 2010

Class Inheritance

Page 20: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

20Softwareprojekt: Mobile Development, Sommersemester 2010

Protocols

Page 21: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

21Softwareprojekt: Mobile Development, Sommersemester 2010

Categories

Page 22: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

22Softwareprojekt: Mobile Development, Sommersemester 2010

Properties

Page 23: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

23Softwareprojekt: Mobile Development, Sommersemester 2010

Access Properties

Page 24: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

24Softwareprojekt: Mobile Development, Sommersemester 2010

Property Types

Page 25: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

25Softwareprojekt: Mobile Development, Sommersemester 2010

Enumeration

Page 26: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

26Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch Basics

Page 27: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

27Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch

Page 28: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

28Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch Design Principles

delegate

target/action

Page 29: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

29Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch Design Principles

delegate

target/action

Page 30: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

30Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch

Cocoa touch

UIKit

• User Interfaces Elements• Application Runtime• Event Handling• Hardware APIs

Foundation

• Utility Classes• Collection Classes• Object wrappers for

system services

Page 31: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

31Softwareprojekt: Mobile Development, Sommersemester 2010

Foundation Classes: NSObject

Page 32: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

32Softwareprojekt: Mobile Development, Sommersemester 2010

Memory Management in Cocoa Touch

Page 33: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

33Softwareprojekt: Mobile Development, Sommersemester 2010

Memory Management in Cocoa Touch

Page 34: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

34Softwareprojekt: Mobile Development, Sommersemester 2010

Memory Management in Cocoa Touch

Page 35: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

35Softwareprojekt: Mobile Development, Sommersemester 2010

Foundation Classes: NSString

Page 36: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

36Softwareprojekt: Mobile Development, Sommersemester 2010

Foundation Classes: NSArray, NSSet

Page 37: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

37Softwareprojekt: Mobile Development, Sommersemester 2010

Foundation Classes: NSDictionary

Page 38: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

38Softwareprojekt: Mobile Development, Sommersemester 2010

Foundation Classes: NSNumber

Page 39: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

39Softwareprojekt: Mobile Development, Sommersemester 2010

Mutable vs. Immutable

Page 40: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

40Softwareprojekt: Mobile Development, Sommersemester 2010

Cocoa Touch

Cocoa touch

UIKit

• User Interfaces Elements• Application Runtime• Event Handling• Hardware APIs

Foundation

• Utility Classes• Collection Classes• Object wrappers for

system services

Page 41: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

41Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UIViewController

Page 42: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

42Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UIViewController

Page 43: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

43Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UIViewController

Page 44: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

44Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UIModalViewController

Page 45: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

45Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UINavigationViewController

Page 46: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

46Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UINavigationViewController

Page 47: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

47Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UINavigationViewController

Page 48: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

48Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UINavigationItem

Page 49: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

49Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UINavigationItem

Page 50: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

50Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITabBarController

Page 51: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

51Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITabBarController

Page 52: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

52Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITabBarItem

Page 53: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

53Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITableViewController

Page 54: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

54Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITableViewController

Page 55: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

55Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITableViewDelegate

Page 56: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

56Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITableViewDataSource

Page 57: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

57Softwareprojekt: Mobile Development, Sommersemester 2010

UIKit: UITableViewCell

Page 58: Softwareprojekt: Mobile Development Einführung Objective-C · 2010. 4. 22. · Softwareprojekt: Mobile Development, Sommersemester 2010 3 Organisatorisches • Zedat Schulungsraum

58Softwareprojekt: Mobile Development, Sommersemester 2010

Weiterführendes

• Cocoa Touch Einführung RWTH Aachen:http://deimos3.apple.com/WebObjects/Core.woa/Browse/rwth-aachen.de.2800832269

• Objective-C Einführung Stanford:http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.3141732992

• How-Tos zur Ansteuerung von Sensoren:http://www.inf.fu-berlin.de/lehre/SS10/MD/index.html

• iPhone SDK Referenz:http://developer.apple.com/iphone/library/navigation/index.html

• Hello World:http://www.miaowang.de/studium/tutorials/iphone/iphone_1.html

• Objective-C Beginners Guide:http://www.otierney.net/objective-c.html

• iPhone Getting Started Videos:https://deimos.apple.com/WebObjects/Core.woa/BrowsePrivately/adc.apple.com.1479953497

• Basic UI Code Snippets:http://www.ipodtouchfans.com/forums/showthread.php?t=102782