Table Of Content60081-1 U1+U4 02.02.2011 16:45 Uhr Seite 1
Know-how
Dr. Dirk Koller Dr. Dirk Koller
Aus dem Inhalt: ist blau.
• iOS 4 – das aktuelle Betriebssystem
von iPhone, iPad und iPod touch
• Das ist neu in iOS 4
Der
iPhone-Apps • Das iOS-SDK im Detail
• Die zentralen Klassen von Cocoa Touch n Bestseller!
entwickeln ••• ODReabgsje eEclnntit vfwüeir-c Cdk aliumsn D giOesbSwuegrkgzineugg Xcode el uFnüdr i iPPhoodn teo,u iPchad.
Die Apps sind der Schlüssel zum Erfolg des iPhones und seiner Geschwister iPad • Die Speicherverwaltung: Speicherlecks k Jetzt aktuell
und iPod touch. Der erfahrene Entwickler Dirk Koller demonstriert in dieser und Overreleases vermeiden c zu iOS 4.x!
aktualisierten Version seines Bestsellers, wie Sie Apps für die Kultgeräte von • Das Projekt anlegen:
i
Apple programmieren. Er erläutert die Neuerungen der Version 4 des Betriebs- Projekt-Templates und .plists
w
systems iOS und beschreibt in bewährter Manier anhand einer Beispiel-App • Die Bedienoberfläche entwerfen: Navi-
den Weg von der ersten Idee bis zu Upload und Vermarktung im App Store. Sie gation Controller, Tool Bars und Tab Bars
erfahren, wie Sie die App technisch sauber umsetzen, die Benutzeroberfläche • Core Data – das Daten-Framework t
entwerfen und mit Features wie z. B. Geodaten anreichern.
• Geodaten mit Core Location und n
(cid:2) Map Kit integrieren
Von der Idee zur fertigen App
Dieses Buch zeigt den kompletten Weg einer iPhone-App: von der Grundidee • Mailfunktionen und Web Views integrieren e
über die nötigen Features bis zur Skizze der Benutzeroberfläche. Dann geht
• Persistente Datenspeicherung
es an die Umsetzung: Autor Dirk Koller stellt die Entwicklungsumgebung 2. aktualisierte Auflage
s
Xcode, das Datenbank-Framework und die zentralen Klassen der Program- • Lokalisierung und Internationalisierung
mierschnittstelle des Betriebssystems iOS vor. Schritt für Schritt erläutert er • Feinschliff für die App: p
die Entwicklung der App und gibt Tipps dazu, wie Sie die Applikation mit Icons, Farben und Schriften iPhone-Apps
Featureswie Geokoordinaten oder Kontaktdaten anreichern können. Ent-
• Die App testen: Unit Tests und Betatests p
wicklern, die mit Java oder C++ vertraut sind, gibt er zudem einen Einblick
in die Programmiersprache Objective-C. • Die App in den App Store ausliefern
A
(cid:2) Einstellen in den App Store • Besonderheiten der iPad-Entwicklung: entwickeln
Split Views und Pop-overs
Mit der Programmierung allein ist es noch nicht getan – schließlich entscheidet
-
die Präsentation im App Store über den Erfolg der Applikation. Dirk Koller zeigt • Apps richtig vermarkten – iPhone, iPad
detailliert, wie Sie die App auf das Einstellen in den App Store vorbereiten und und iPod touch als Geschäftsmodell e
worauf Sie achten müssen, um die Qualitätskriterien von Apple zu erfüllen. Applikationen für iPhone, iPad und iPod touch programmieren
Sie erfahren, wie Sie die App gründlich testen und überzeugend präsentieren. n
Darüber hinaus erhalten Sie Tipps für die erfolgreiche Vermarktung Ihres
Über den Autor:
Programms. o > So entwickeln Sie Apps mit dem iPhone-SDK und Objective-C
Dr. Dirk Koller ist seit zehn Jahren in der Software-
(cid:2)
Entwickeln für das iPad entwicklung als Entwickler, Berater und technischer > Xcode, Datenbank-Framework und die wichtigsten
h
Ausführlich geht der Autor auf die Programmierung für Apples iPad ein. Das Projektleiter tätig. Sein Tätigkeitsfeld ist die Java- Klassen des Betriebsystems iOS im Detail
große Display des Tablet-Computers bietet ein ungeheures Potenzial für die /Oracle-Entwicklung, zu der er regelmäßig Beiträge
Applikationsentwicklung. Dirk Koller zeigt, wie bestehende Apps an das iPad in Fachzeitschriften beisteuert. Seit dem Erschei- P > Entwickeln ist nicht genug: Apps im App Store richtig vermarkten
angepasst werden und wie Sie durch geteilte Bildschirmbereiche (Split Views) nendes iPhones widmet er sich mit großer Be-
und Pop-overs (Fenster, die über andere Bereiche gelegt werden) die geisterung der Programmierung des Geräts. Er i
Darstellungsmöglichkeiten des Geräts voll ausnutzen. lebt und arbeitet in der Nähe von Frankfurt/Main.
Auf www.buch.cd: r
e
Der komplette Quellcode der oll
K
Beispiel-App ChronoLog. Von der Idee zum App Store:
So realisieren und vermarkten
Das Praxisbuch
30,–EUR[D] Besuchen Sie unsere Website
für Smartphone- Sie Ihre Apps!
ISBN 978-3-645-60081-1 www.franzis.de Entwickler
60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 1
Dr. Dirk Koller
iPhone-Apps entwickeln
60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 3
Dr. Dirk Koller
2. aktualisierte Auflage
iPhone-Apps
entwickeln
Applikationen für iPhone, iPad und iPod touch programmieren
Mit 216 Abbildungen
60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 4
Bibliografische Information der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;
detaillierte Daten sind im Internet über http://dnb.ddb.de abrufbar.
Alle Angaben in diesem Buch wurden vom Autor mit größter Sorgfalt erarbeitet bzw. zusammengestellt und unter Einschaltung wirksamer
Kontrollmaßnahmen reproduziert. Trotzdem sind Fehler nicht ganz auszuschließen. Der Verlag und der Autor sehen sich deshalb gezwungen,
darauf hinzuweisen, dass sie weder eine Garantie noch die juristische Verantwortung oder irgendeine Haftung für Folgen, die auf fehlerhafte
Angaben zurückgehen, übernehmen können. Für die Mitteilung etwaiger Fehler sind Verlag und Autor jederzeit dankbar. Internetadressen
oder Versionsnummern stellen den bei Redaktionsschluss verfügbaren Informationsstand dar. Verlag und Autor übernehmen keinerlei
Verantwortung oder Haftung für Veränderungen, die sich aus nicht von ihnen zu vertretenden Umständen ergeben. Evtl. beigefügte oder
zum Download angebotene Dateien und Informationen dienen ausschließlich der nicht gewerblichen Nutzung. Eine gewerbliche Nutzung
ist nur mit Zustimmung des Lizenzinhabers möglich.
© 2011 Franzis Verlag GmbH, 85586 Poing
Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Das Erstellen und
Verbreiten von Kopien auf Papier, auf Datenträgern oder im Internet, insbesondere als PDF, ist nur mit ausdrücklicher Genehmigung des
Verlags gestattet und wird widrigenfalls strafrechtlich verfolgt.
Die meisten Produktbezeichnungen von Hard- und Software sowie Firmennamen und Firmenlogos, die in diesem Werk genannt werden,
sind in der Regel gleichzeitig auch eingetragene Warenzeichen und sollten als solche betrachtet werden. Der Verlag folgt bei den Produkt-
bezeichnungen im Wesentlichen den Schreibweisen der Hersteller.
Lektorat:Franz Graser
Satz:DTP-Satz A. Kugge, München
art & design: www.ideehoch2.de
Druck:Bercker, 47623 Kevelaer
Printed in Germany
ISBN 978-3-645-60081-1
5
Inhaltsverzeichnis
1 Einleitung....................................................................................................13
1.1 Das iPhone: ein revolutionäres mobiles Gerät..................................13
1.2 Für wen ist dieses Buch gedacht?.....................................................14
1.3 Die Beispielanwendung...................................................................15
1.4 Was benötige ich zum Starten?........................................................15
1.4.1 Einen Mac........................................................................................15
1.4.2 Das iOS-SDK....................................................................................16
1.4.3 Ein iPhone, einen iPod touch oder ein iPad......................................16
1.4.4 Eine Entwicklerlizenz.......................................................................16
Teil 1 – Die Voraussetzungen..............................................................................17
2 Das iPhone OS (iOS)....................................................................................19
2.1 Technologien & Frameworks............................................................19
2.1.1 Cocoa Touch....................................................................................20
2.1.2 Media..............................................................................................23
2.1.3 Core Services...................................................................................24
2.1.4 Core OS............................................................................................27
2.2 Cocoa Design Patterns.....................................................................28
2.2.1 Model View Controller......................................................................28
2.2.2 Delegation (Delegate)......................................................................29
2.2.3 Target Action....................................................................................30
3 Objective-C..................................................................................................31
3.1 Herkunft der Sprache.......................................................................31
3.2 Nachrichten.....................................................................................31
3.3 Import..............................................................................................32
3.4 Interface und Implementation..........................................................33
3.4.1 Interface..........................................................................................33
3.4.2 Implementation...............................................................................34
3.5 Datentypen......................................................................................35
3.5.1 Id.....................................................................................................35
3.5.2 BOOL...............................................................................................35
3.5.3 SEL..................................................................................................35
3.5.4 Nil....................................................................................................35
3.6 Properties........................................................................................36
3.6.1 Deklaration: @property....................................................................36
6
Inhaltsverzeichnis
3.6.2 Implementierung: @synthesize........................................................36
3.6.3 Property-Attribute............................................................................37
3.6.4 Punktnotation..................................................................................39
3.7 Protokolle........................................................................................39
3.8 Kategorien.......................................................................................40
4 Entwicklungswerkzeuge..............................................................................41
4.1 Xcode..............................................................................................41
4.2 Simulator.........................................................................................44
4.3 Interface Builder..............................................................................46
4.3.1 Xib-Files...........................................................................................46
4.3.2 Document Window...........................................................................46
4.3.3 Designoberfläche.............................................................................47
4.3.4 Library..............................................................................................48
4.3.5 Property-Inspektoren.......................................................................50
4.4 Instruments.....................................................................................54
5 Debugging...................................................................................................57
5.1 Konsolenausgaben..........................................................................57
5.2 Debugger.........................................................................................58
5.3 Remote Debugging...........................................................................62
6 Memory Management..................................................................................63
6.1 Zwei Regeln.....................................................................................63
6.2 Retain, release & dealloc.................................................................64
6.3 AutoreleasePool...............................................................................66
6.4 Overrelease......................................................................................67
6.5 Leaks...............................................................................................70
Teil 2 – Das Grundgerüst der Zeiterfassung.........................................................73
7 User Interface Design...................................................................................75
7.1 Das Gerät kennenlernen...................................................................75
7.2 Grundlegender Aufbau von Apps......................................................76
7.3 UI-Komponenten..............................................................................77
7.3.1 Status Bar........................................................................................77
7.3.2 Navigation Bar & Table View............................................................77
7.3.3 Tool Bar...........................................................................................78
7.3.4 Tab Bar............................................................................................78
7.3.5 Alert.................................................................................................78
7.3.6 Action Sheet....................................................................................79
7.3.7 Modale Views..................................................................................79
7.3.8 Und der ganze Rest..........................................................................79
7.4 Application Definition Statement & Features....................................80
7.5 Objektmodell...................................................................................83
7
Inhaltsverzeichnis
7.6 Navigationsmodell & Skizzen...........................................................84
7.6.1 Hauptmenü......................................................................................85
7.6.2 Leistungsliste..................................................................................87
7.6.3 Leistungsdetails...............................................................................88
7.6.4 Zeitenliste........................................................................................91
7.7 Bessere Mock-ups............................................................................92
8 Projektstart..................................................................................................95
8.1 Versionsverwaltung.........................................................................95
8.2 Generieren des Projekts...................................................................96
8.3 Projektstruktur.................................................................................98
8.3.1 chronos-Info.plist.............................................................................99
8.3.2 chronos.xcdatamodel....................................................................100
8.3.3 chronos_Prefix.pch........................................................................100
8.3.4 main.m..........................................................................................100
8.3.5 chronosAppDelegate.h...................................................................100
8.3.6 chronosAppDelegate.m..................................................................101
8.3.7 MainWindow.xib............................................................................101
8.4 Erster Start.....................................................................................101
8.4.1 Devices..........................................................................................102
8.4.2 Zertifikat........................................................................................103
8.4.3 App ID............................................................................................105
8.4.4 Provisioning Profile........................................................................106
8.5 Was die App im Innersten zusammenhält......................................108
9 Das Datenmodell: Core Data......................................................................111
9.1 Modell...........................................................................................111
9.2 Entitäten........................................................................................113
9.3 Attribute........................................................................................113
9.4 Beziehungen..................................................................................114
9.5 Erstellen des Chronos-Datenmodells..............................................115
9.5.1 Kunde............................................................................................115
9.5.2 Projekt...........................................................................................115
9.5.3 Leistung.........................................................................................116
9.5.4 Zeit................................................................................................116
9.6 Die Zugriffsschicht: der Core-Data-Stack........................................117
9.6.1 Managed Object Model..................................................................118
9.6.2 NSPersistentStoreCoordinator........................................................119
9.6.3 NSManagedObjectContext.............................................................120
9.7 Verwenden des Stack.....................................................................120
9.7.1 Fetch Request................................................................................121
9.7.2 Filtern: NSPredicate.......................................................................121
9.7.3 Sortieren: NSSortDescriptor...........................................................122
9.7.4 Managed Object.............................................................................123
8
Inhaltsverzeichnis
10 View Controller..........................................................................................125
10.1 Views & Controller..........................................................................125
10.2 UIViewController............................................................................126
10.2.1 Erzeugen von View & Controller......................................................126
10.2.2 Wichtige Methoden........................................................................129
11 Navigation Controller.................................................................................131
11.1 Funktionsweise des Navigation Controllers....................................131
11.2 Erzeugen eines Navigation View Controllers...................................132
11.3 Anpassung der Navigation Bar.......................................................136
11.3.1 Bar Button Items............................................................................136
11.3.2 Title View.......................................................................................138
11.3.3 Back Button...................................................................................138
11.4 Weitere Methoden zur Stapelverwaltung........................................138
12 Table View Controller.................................................................................141
12.1 Aufbau von Table Views.................................................................141
12.2 Erstellen von Controller & View......................................................143
12.3 Anzeigen von Daten: Data Source..................................................145
12.3.1 numberOfSectionsInTableView:.....................................................146
12.3.2 tableView:numberOfRowsInSection:..............................................146
12.3.3 tableView:cellForRowAtIndexPath:.................................................146
12.4 Aktionen in Tabellen: UITableViewDelegate...................................153
12.5 Eigene Zellen.................................................................................157
12.6 Edit Mode......................................................................................161
12.7 Header & Footer.............................................................................163
12.8 Die Detail-Views.............................................................................166
13 Tab Bar Controller......................................................................................171
13.1 Funktionsweise des Tab Bar Controllers.........................................171
13.2 Erzeugen eines Tab Bar Controllers................................................172
13.3 Tab Bar Controller Delegate............................................................176
14 Textkomponenten & Picker........................................................................179
14.1 Text Field.......................................................................................179
14.1.1 Erzeugung & Konfiguration.............................................................179
14.1.2 Text Field Delegate.........................................................................180
14.1.3 Notifications..................................................................................181
14.2 Text View.......................................................................................184
14.3 Search Bar.....................................................................................184
14.4 Picker View....................................................................................186
14.4.1 Erzeugung & Konfiguration.............................................................186
14.4.2 Picker View Data Source.................................................................187
14.4.3 Picker View Delegate......................................................................187
14.5 Date Picker.....................................................................................188
9
Inhaltsverzeichnis
Teil 3 – Erweiterung der Zeiterfassung..............................................................191
15 Ortsbestimmung: Core Location.................................................................193
15.1 Woher weiß das Gerät, wo es ist?...................................................193
15.1.1 Mobilfunksender............................................................................193
15.1.2 WiFi-Netzwerke..............................................................................193
15.1.3 GPS................................................................................................194
15.2 Die Core Location API.....................................................................194
15.2.1 Location Manager..........................................................................194
15.2.2 Location Manager Delegate............................................................195
15.2.3 Location.........................................................................................197
15.3 Koordinatenrechnereien.................................................................198
15.3.1 Umwandlung einer Adresse in Koordinaten....................................198
15.3.2 Umwandlung von Koordinaten in eine Adresse..............................200
15.3.3 Die Entfernungsformel...................................................................201
16 Map Kit......................................................................................................205
16.1 Erzeugung und Konfiguration des Map Views.................................205
16.2 Regionen........................................................................................206
16.3 Annotationen.................................................................................207
17 Adressbuch...............................................................................................211
17.1 Auswählen von Kontakten..............................................................211
17.2 Anzeigen und Editieren von Kontakten...........................................214
17.3 Anlegen von neuen Kontakten........................................................215
18 Zugriff aufs Internet...................................................................................219
18.1 Mails versenden.............................................................................219
18.2 Web View.......................................................................................221
18.3 Request & Response......................................................................225
18.3.1 URL................................................................................................225
18.3.2 URL Request...................................................................................225
18.3.3 URL Connection..............................................................................226
18.4 Austauschformate: XML und JSON..................................................228
18.4.1 XML...............................................................................................228
18.4.2 JSON..............................................................................................231
19 File I/O.......................................................................................................237
19.1 Verzeichnisstruktur........................................................................237
19.1.1 tmp................................................................................................237
19.1.2 Documents....................................................................................238
19.1.3 {App-Name}.app............................................................................238
19.1.4 Library/Preferences........................................................................238
19.1.5 Library/Caches...............................................................................238
19.2 Pfade.............................................................................................239
10
Inhaltsverzeichnis
19.3 File Manager..................................................................................239
19.4 Property-Listen...............................................................................241
20 Settings.....................................................................................................245
20.1 System-Settings.............................................................................245
20.2 In App Settings..............................................................................249
20.2.1 In App Settings selbst entwickeln..................................................249
20.2.2 Fertige Frameworks........................................................................252
21 Lokalisierung & Internationalisierung........................................................255
21.1 Welche Sprachen sind sinnvoll?.....................................................255
21.2 Internationalisierung......................................................................256
21.2.1 Strings...........................................................................................256
21.2.2 Grafiken, Sounds und andere Ressourcen......................................259
21.2.3 Nib-Files.........................................................................................260
21.2.4 Settings.........................................................................................261
21.3 Lokalisierung.................................................................................262
21.3.1 Locale............................................................................................262
21.3.2 Zahlen: Number Formatter.............................................................263
21.3.3 Datum: Date Formatter...................................................................264
21.3.4 Eigene Formatter............................................................................265
22 Icons, Farben & Schriften...........................................................................267
22.1 Home-Screen-Icon..........................................................................267
22.2 Farben...........................................................................................270
22.3 Schrift............................................................................................275
22.4 Launch Image................................................................................276
Teil 4 – Die Auslieferung...................................................................................279
23 Unit Tests..................................................................................................281
23.1 Was soll getestet werden?..............................................................281
23.2 Logische Tests...............................................................................282
23.3 Application Tests...........................................................................286
24 Beta-Test...................................................................................................289
24.1 Herausfinden der Geräte-ID............................................................289
24.2 Distributionszertifikat....................................................................290
24.3 Ad-hoc-Profil..................................................................................291
24.4 Erzeugen des Build........................................................................292
24.5 Verteilen von App und Ad-hoc-Profil...............................................295
24.6 Erfassen der Fehler........................................................................296
24.7 Crash Logs.....................................................................................297