Softwareprojekt: Mobile DevelopmentEinführung Objective-C
Miao Wang, Tinosch GanjinehFreie Universität Berlin, Institut für Informatik
21.04.2010
2Softwareprojekt: Mobile Development, Sommersemester 2010
Agenda
• Organisatorisches• Objective-C Basics (*)• Cocoa Touch Basics (*)• Live-Demo
• (*) basierend auf Material von RWTH Aachen
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
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
5Softwareprojekt: Mobile Development, Sommersemester 2010
Objective-C Basics
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
7Softwareprojekt: Mobile Development, Sommersemester 2010
New Types
8Softwareprojekt: Mobile Development, Sommersemester 2010
Identity vs. Equality
9Softwareprojekt: Mobile Development, Sommersemester 2010
Object Messaging
10Softwareprojekt: Mobile Development, Sommersemester 2010
Object Messaging
Each argument has a description:
[receiver methodWithArgument1:(<Typ>)arg1 andArgument2:(<Typ>)arg2];
11Softwareprojekt: Mobile Development, Sommersemester 2010
Selector
12Softwareprojekt: Mobile Development, Sommersemester 2010
Advantages of Object Messaging
Example 1: Late Binding
13Softwareprojekt: Mobile Development, Sommersemester 2010
Advantages of Object Messaging
Example 2: SelectorFromString
14Softwareprojekt: Mobile Development, Sommersemester 2010
Header and Implementation
15Softwareprojekt: Mobile Development, Sommersemester 2010
Header
16Softwareprojekt: Mobile Development, Sommersemester 2010
Implementation
17Softwareprojekt: Mobile Development, Sommersemester 2010
Class Instantiation
18Softwareprojekt: Mobile Development, Sommersemester 2010
Class Variables and Methods
19Softwareprojekt: Mobile Development, Sommersemester 2010
Class Inheritance
20Softwareprojekt: Mobile Development, Sommersemester 2010
Protocols
21Softwareprojekt: Mobile Development, Sommersemester 2010
Categories
22Softwareprojekt: Mobile Development, Sommersemester 2010
Properties
23Softwareprojekt: Mobile Development, Sommersemester 2010
Access Properties
24Softwareprojekt: Mobile Development, Sommersemester 2010
Property Types
25Softwareprojekt: Mobile Development, Sommersemester 2010
Enumeration
26Softwareprojekt: Mobile Development, Sommersemester 2010
Cocoa Touch Basics
27Softwareprojekt: Mobile Development, Sommersemester 2010
Cocoa Touch
28Softwareprojekt: Mobile Development, Sommersemester 2010
Cocoa Touch Design Principles
delegate
target/action
29Softwareprojekt: Mobile Development, Sommersemester 2010
Cocoa Touch Design Principles
delegate
target/action
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
31Softwareprojekt: Mobile Development, Sommersemester 2010
Foundation Classes: NSObject
32Softwareprojekt: Mobile Development, Sommersemester 2010
Memory Management in Cocoa Touch
33Softwareprojekt: Mobile Development, Sommersemester 2010
Memory Management in Cocoa Touch
34Softwareprojekt: Mobile Development, Sommersemester 2010
Memory Management in Cocoa Touch
35Softwareprojekt: Mobile Development, Sommersemester 2010
Foundation Classes: NSString
36Softwareprojekt: Mobile Development, Sommersemester 2010
Foundation Classes: NSArray, NSSet
37Softwareprojekt: Mobile Development, Sommersemester 2010
Foundation Classes: NSDictionary
38Softwareprojekt: Mobile Development, Sommersemester 2010
Foundation Classes: NSNumber
39Softwareprojekt: Mobile Development, Sommersemester 2010
Mutable vs. Immutable
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
41Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UIViewController
42Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UIViewController
43Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UIViewController
44Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UIModalViewController
45Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UINavigationViewController
46Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UINavigationViewController
47Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UINavigationViewController
48Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UINavigationItem
49Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UINavigationItem
50Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITabBarController
51Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITabBarController
52Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITabBarItem
53Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITableViewController
54Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITableViewController
55Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITableViewDelegate
56Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITableViewDataSource
57Softwareprojekt: Mobile Development, Sommersemester 2010
UIKit: UITableViewCell
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