1 Objektorientierte Programmierung: Grundlagen

Werbung
Auf einen Blick
TEIL I: Einführung ............................................................ 23
TEIL II: Objective-C ......................................................... 49
TEIL III: Cocoa .................................................................. 135
TEIL IV: iPhone ................................................................ 399
TEIL V: Weitere Themen .................................................. 473
Anhang ............................................................................ 491
Inhalt
Vorworte ......................................................................................................
Geleitwort des Gutachters ........................................................................
Einleitung .....................................................................................................
15
17
19
TEIL I: Einführung
1
Objektorientierte Programmierung: Grundlagen .......
25
2
Ein erstes Programm: »Hallo Anwender!« ....................
31
2.1
2.2
2.3
32
33
36
37
42
45
46
2.4
2.5
Projekt anlegen .......................................................................
Den Controller erstellen ........................................................
Grafische Oberfläche erstellen ..............................................
2.3.1
Oberfläche gestalten und Elemente platzieren
2.3.2
Elemente mit dem Controller verbinden ...........
Programmcode erstellen ........................................................
Kompilieren und Ausführen des Programms .....................
TEIL II: Objective-C
3
Grundlagen von Objective-C ............................................ 51
3.1
3.2
Grundlegende Konventionen ...............................................
3.1.1
Ausdruck .................................................................
3.1.2
Anweisung ..............................................................
3.1.3
Anweisungen in Blöcken ......................................
3.1.4
Bezeichner ...............................................................
3.1.5
Operatoren .............................................................
3.1.6
Reservierte Schlüsselwörter .................................
3.1.7
Kommentare ...........................................................
Ein einfaches Programm in Objective-C .............................
3.2.1
Ein Programm eingeben und kompilieren .........
3.2.2
Der Aufbau im Detail ............................................
52
52
53
53
53
54
55
55
56
57
59
5
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 5
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
4
Variablen und Datentypen ................................................
63
4.1
4.2
4.3
Einführung ................................................................................
Gültigkeitsbereich von Variablen .........................................
Datentypen der Programmiersprache C ..............................
4.3.1
Einfache C-Datentypen .........................................
4.3.2
Typkonvertierung ...................................................
4.3.3
Listen .......................................................................
4.3.4
C-Zeichenketten mit »char« .................................
4.3.5
Datenstrukturen mit »struct« ...............................
Typen von Objekten in Objective-C ....................................
4.4.1
Der allgemeine Datentyp »id« .............................
4.4.2
Zahlen mit »NSNumber« ......................................
4.4.3
Zeichen mit »NSString« .........................................
4.4.4
Listen mit NSArray .................................................
4.4.5
Benannte Listen mit »NSDictionary« ..................
Zusammenfassung und Ausblick ..........................................
63
65
68
68
70
71
72
73
75
76
77
78
80
82
84
Bedingungen und Funktionen .........................................
87
5.1
87
87
88
89
89
91
93
95
96
4.4
4.5
5
5.2
5.3
6
Grundlagen ..............................................................................
5.1.1
Vergleichsoperatoren ............................................
5.1.2
Logische Operatoren .............................................
Steuerungsanweisungen ........................................................
5.2.1
Bedingte Ausführung: »if« ....................................
5.2.2
Mehrfachauswahl: »switch« .................................
5.2.3
In Kürze: Bedingter Ausdruck .............................
5.2.4
Abschließende Empfehlungen .............................
Funktionen ...............................................................................
Schleifen ................................................................................ 101
6.1
6.2
Schleifen definieren ................................................................
6.1.1
Bedingte Wiederholung: »while« ........................
6.1.2
Prüfung am Ende: »do . . . while« ......................
6.1.3
Die Zählschleife: »for« ...........................................
Mehr Komfort ..........................................................................
6.2.1
Definition in der Schleife ......................................
6.2.2
Verkürzte Schreibweisen ......................................
6.2.3
Schnelle Aufzählung mit Fast Enumeration ......
101
101
103
104
108
108
108
109
6
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 6
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
7
Objektorientierte Programmierung: Klassen erstellen
und bearbeiten .................................................................... 113
7.1
7.2
Aufbau von Klassen in Objective-C .....................................
7.1.1
Deklaration einer Klasse .......................................
7.1.2
Implementierung einer Klasse .............................
7.1.3
Allozieren und Initialisieren von Objekten .......
7.1.4
Die Klasse »Autor« verwenden ...........................
7.1.5
Klassenmethoden ..................................................
7.1.6
Propertys in Objective-C 2.0 ...............................
Speicherverwaltung ................................................................
7.2.1
Grundlagen .............................................................
7.2.2
Garbage Collection ................................................
7.2.3
Referenzen zählen .................................................
113
115
117
118
121
122
123
126
127
127
129
TEIL III: Cocoa
8
Grundlagen von Cocoa ....................................................... 137
8.1
8.2
8.3
8.4
8.5
9
Einführung und Entwurfsmuster ..........................................
8.1.1
Cocoa als Framework ............................................
8.1.2
Model-View-Controller ........................................
8.1.3
Delegation ..............................................................
8.1.4
Observer ..................................................................
8.1.5
Target-Action ..........................................................
Bestandteile von Cocoa .........................................................
Cocoa in der Praxis .................................................................
Der Interface Builder ..............................................................
Die Dokumentation von Apple ............................................
137
138
139
139
141
142
142
143
148
152
Fenster, Views und Voreinstellungen ............................. 155
9.1
9.2
Das Fenster für die Einstellungen ........................................
9.1.1
Attribute und Elemente des Fensters ................
9.1.2
Der »First Responder«, »Next Key View«
und das Hauptmenü ..............................................
9.1.3
Anlegen des Delegates für Applikation und
Einstellungs-Panel ..................................................
Voreinstellungen des Benutzers speichern .........................
9.2.1
Personalisierung von »Info.plist« ........................
9.2.2
Implementierung der Controller-Klasse .............
156
156
157
160
162
163
164
7
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 7
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
9.3
9.2.3
Garbage Collection aktivieren ............................. 168
Symbolleiste im Hauptfenster ............................................... 168
10 Datenmodelle mit Core Data ........................................... 173
10.1 Bestandteile von Core Data ..................................................
10.2 Datenmodell erstellen ............................................................
10.2.1
Entitäten anlegen ...................................................
10.2.2 Attribute erzeugen und definieren .....................
10.2.3 Beziehungen definieren ........................................
10.2.4 Suchabfragen definieren .......................................
10.3 Erweiterung des Objective-C-Codes ...................................
10.3.1
AppDelegate erweitern ........................................
10.3.2 Deklaration eines Core Data Controllers ...........
10.4 Erweiterung der grafischen Oberfläche ..............................
10.5 Implementierung des »AppDelegate« .................................
10.5.1
Definition einer privaten Kategorie ....................
10.5.2 Einlesen des Objektmodells .................................
10.5.3 Öffnen der Dateiablage ........................................
10.5.4 Initialisieren des Objektkontextes ......................
10.5.5 Speichern der Daten .............................................
10.5.6 Zugriff auf Standardwerte ....................................
10.6 Der CoreDataExampleController ..........................................
10.6.1
Hinzufügen einiger Hilfsmethoden .....................
10.6.2 Tags in Managed Objects .....................................
10.6.3 Anzeigen aller gespeicherten Schlagwörter ......
10.6.4 Neuen Artikel anlegen ..........................................
10.6.5 Anzeige aller Artikel ..............................................
10.6.6 Anzeigen von verschlagworteten Artikeln ........
10.7 Ausführen der Anwendung ...................................................
174
176
177
178
180
183
186
186
187
189
192
192
193
194
197
198
199
200
201
203
204
206
209
210
211
11 Cocoa Bindings .................................................................... 213
11.1 Grundlagen und Key-Value Coding .....................................
11.2 Erstellung der grafischen Oberfläche ..................................
11.2.1
Array Controller hinzufügen ................................
11.2.2 Table View für Artikel anlegen ............................
11.2.3 Textfelder für Titel und Autor ergänzen .............
11.2.4 Ein Feld für die Datumseingabe platzieren .......
11.2.5 »Array Controller« für die Schlagwörter ............
11.2.6 Table View für die Schlagwörter .........................
213
215
216
216
218
219
220
221
8
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 8
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
11.2.7
11.3
11.4
11.5
11.6
»Text View« für den Inhalt des
Weblog-Artikels .....................................................
Artikel hinzufügen und löschen ...........................................
11.3.1
Symbolleiste verbinden ........................................
11.3.2 Individualisierte Managed Objects .....................
Hinzufügen von Tags ..............................................................
11.4.1
Schaltflächen und individualisierte Klasse ........
11.4.2 Array Controller für die Tags ................................
11.4.3 Panel für die Tags erstellen ..................................
Ein Tag einem Artikel zuweisen ............................................
11.5.1
Schaltfläche und Aktivierungsregeln ..................
11.5.2 Target-Action-Methode im »App Delegate« .....
Benutzerfreundlichkeit steigern – Weitere Möglichkeiten
mit Cocoa Bindings .................................................................
11.6.1
Artikel nach Datum sortieren ..............................
11.6.2 Views deaktivieren ................................................
11.6.3 Anzahl der vorhandenen Artikel darstellen ......
11.6.4 »NSUserDefaultController« für die
Voreinstellungen ....................................................
11.6.5 Menüpunkte und Cocoa Bindings ......................
222
223
224
224
227
227
229
229
232
232
234
236
237
238
239
240
242
12 Fehlerbehandlung und Debugging ................................. 245
12.1 Fehler während der Entwicklung erkennen .......................
12.1.1
Protokolle mit NSLog ............................................
12.1.2
Bedingter Abbruch mit assert und NSAssert ....
12.2 Fehlersuche in Xcode .............................................................
12.2.1
Fehlermeldungen beim Kompilieren ..................
12.2.2 Debugger und Breakpoints ..................................
12.3 Auf Laufzeitfehler mit »NSError« und »NSAlert«
reagieren ...................................................................................
245
246
248
252
253
254
259
13 Arbeiten mit Texten im »TextView« ............................... 265
13.1 »TextView« und »NSAttributedString« ................................
13.2 Text mit Hyperlinks versehen ................................................
13.2.1
Kategorien in Objective-C-Klassen .....................
13.2.2 Menü und Target-Actions verbinden .................
13.2.3 Implementierung der Kategorie ..........................
265
267
269
270
271
9
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 9
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
14 Netzwerke und WebKit .................................................... 277
14.1 WebKit zur Darstellung von Webseiten .............................
14.1.1
Grafische Oberfläche erweitern ..........................
14.1.2
Spezielle Xib-Datei einbinden .............................
14.1.3
WebPanelController implementieren .................
14.1.4
AppDelegate erweitern ........................................
14.2 Kommunikation ins Netzwerk ..............................................
14.2.1
Grundlagen des »URL Loading System« ............
14.2.2 Synchrone und asynchrone Kommunikation ....
14.3 Integration eines externen Frameworks .............................
14.3.1
Die MetaWeblog-Schnittstelle ............................
14.3.2 XML-RPC Framework einbinden ........................
14.3.3 Nutzung des XML-RPC Frameworks ..................
14.3.4 »AppDelegate« um Protokoll erweitern ............
14.4 Artikeldaten in HTML konvertieren .....................................
14.5 Methoden zum Versand ........................................................
14.5.1
Target-Action zum Senden ...................................
14.5.2 Die »XMLRPCConnectionDelegate«Methoden ...............................................................
14.6 Grafische Oberfläche erweitern ............................................
14.6.1
Menüpunkt zum Senden ......................................
14.6.2 Symbolleiste ergänzen ..........................................
14.6.3 Einsatz eines »NSProgressIndicator« ..................
278
278
280
282
285
287
288
290
293
293
294
299
300
301
304
304
307
309
309
311
313
15 Exkurs: Arbeiten mit dem Schlüsselbund ..................... 317
15.1 Die Hilfsklasse »MHKeychainItem« .....................................
15.1.1
Instanzvariablen und Propertys deklarieren ......
15.1.2
Propertys synthetisieren .......................................
15.1.3
Zugriff auf den Schlüsselbund .............................
15.2 Programmstart und »sendeArtikel:« überarbeiten ............
15.3 Grafische Oberfläche überarbeiten ......................................
15.3.1
Fenster der Einstellungen anpassen ...................
15.3.2 Änderungen an »MainMenu.xib« und
»AppDelegate« .......................................................
15.3.3 Implementierung des »PreferencesController«
318
319
320
322
329
332
332
334
335
10
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 10
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
16 Drucken und »NSOperationQueues« ............................. 339
16.1 Verarbeitung von Druckjobs .................................................
16.1.1
Deklaration der Kategorie für den Druck ..........
16.1.2
Implementierung der Kategorie ..........................
16.1.3
Anpassungen im Interface Builder ......................
16.2 Nebenläufigkeit mit »NSOperationQueues« ......................
16.2.1
Simulation eines langlebigen Programmteils ....
16.2.2 Grundlagen von »NSOperationQueue« und
»NSInvocationOperation« ....................................
16.2.3 Aufbereitung der Artikel in einem
Nebenthread ...........................................................
340
341
342
348
349
350
350
352
17 Zwischenablage und Widerrufen .................................... 359
17.1 Die Zwischenablage über »NSPasteboard« ........................
17.1.1
Grundlagen .............................................................
17.1.2
RTF aus der Zwischenablage ................................
17.1.3
Copy, Paste und die Responder-Kette ...............
17.2 Widerrufen mit dem »NSUndoManager« ...........................
17.2.1
Grundlagen .............................................................
17.2.2
»Undo« für die Views aktivieren .........................
17.2.3
»Undo« und Core Data .........................................
17.2.4
Das Setzen von Links rückgängig machen .........
359
360
361
365
370
370
370
371
372
18 Mit Dateien arbeiten ......................................................... 377
18.1 Dateien öffnen und speichern ..............................................
18.1.1
Dateien öffnen mit dem »NSOpenPanel« .........
18.1.2
Dateien speichern und das »NSSavePanel« .......
18.2 Einsatz des »NSFileManager« ...............................................
377
378
380
382
19 Core Animation .................................................................... 385
19.1 Grundlagen ..............................................................................
19.2 Eigenschaften animieren und Filter anwenden .................
19.2.1
Transparenz im WebView .....................................
19.2.2 Filter im WebPanel ................................................
19.3 Explizite Animationen ............................................................
386
387
388
390
394
11
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 11
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
TEIL IV: iPhone
20 Grundlagen der iPhone-Entwicklung ............................. 401
20.1
20.2
20.3
20.4
20.5
20.6
Gemeinsame Software-Architektur ......................................
Modernisierte und neue Frameworks .................................
Einschränkungen des iPhone OS ..........................................
Entwicklungsumgebung .........................................................
Architektur einer iPhone-Anwendung ................................
Kommunikation im Netzwerk ...............................................
401
402
402
403
404
406
21 Der WeblogClient mit Cocoa Touch ............................... 407
21.1 Neues iPhone-Projekt erstellen ............................................
21.2 Core Data-Modell erstellen ..................................................
21.3 Vorbereitungen für die Artikelübersicht .............................
21.3.1
Arbeiten an »MainWindow.xib« .........................
21.3.2 Klasse für den »UITableViewController«
anlegen ....................................................................
21.3.3 Verbindungen zum Controller herstellen ..........
21.4 Application Delegate überarbeiten .....................................
21.5 Implementierung der Artikelübersicht ................................
21.5.1
Controller zum Verwalten der Suchergebnisse
21.5.2 Target-Action für neue Artikel .............................
21.5.3 Initialisierung des Controllers ..............................
21.5.4 Delegate-Methoden zur Darstellung von
Inhalten ...................................................................
21.5.5 Löschen von Artikeln ............................................
21.6 Ansicht für die Details erstellen ...........................................
21.6.1
Eigene Ressourcendatei für das View ................
21.6.2 Neue Controller-Klasse deklarieren ....................
21.6.3 »UITableViewDelegate«- und
»UITableViewDataSource«-Methoden
implementieren ......................................................
21.6.4 Änderungen am »ArtikelOverviewController«
21.6.5 »File’s Owner« und Delegates definieren ..........
21.7 Views für Eingaben .................................................................
21.7.1
Spezialisierte »UIViewController« anlegen ........
21.7.2
»UIViewController« im Interface Builder
instanziieren ...........................................................
21.7.3
Implementierung des »TextFieldController« .....
21.7.4
Implementierung des »DatePickerController«
407
409
410
410
412
414
415
418
418
419
420
424
428
429
429
431
433
437
438
439
439
441
443
445
12
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 12
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
21.7.5
21.7.6
Implementierung des »TextViewController« ..... 446
Selektion im »DetailedViewController« ............. 449
22 Einstellungen, Netzwerk und Test .................................. 453
22.1 Einstellungen der Applikation ..............................................
22.2 »Settings Bundle« hinzufügen und konfigurieren ..............
22.2.1
»NSUserDefaults« integrieren ..............................
22.2.2 Autor für neuen Artikel anpassen .......................
22.3 Kommunikation im Netzwerk ...............................................
22.3.1
Einbindung des XML-RPC-Frameworks .............
22.3.2 »DetailedViewController« erweitern ..................
22.3.3 »UITableViewDelegate« erweitern ......................
22.4 Testphase auf einem Entwicklungsgerät .............................
22.4.1
iPhone Developer Portal ......................................
22.4.2 »Provisioning Profile« installieren .......................
22.4.3 Veröffentlichen der Anwendung .........................
453
454
456
459
459
460
461
465
466
467
470
471
TEIL V: Weitere Themen
23 Tipps und Tricks zu Xcode ................................................ 475
23.1 Rund um den Quelltext .........................................................
23.1.1
Einrücken, Vervollständigen, Umbenennen ......
23.1.2
Markierungen und Lesezeichen ..........................
23.2 Funktionen und Klassen überblicken ..................................
23.3 Projektdateien organisieren ..................................................
475
475
479
481
482
24 Cocoa jenseits von Objective-C ...................................... 483
24.1
24.2
24.3
24.4
Python und PyObjC ................................................................
Ruby und MacRuby ................................................................
JavaScript und JSCocoa ..........................................................
F-Script ......................................................................................
483
486
488
489
13
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 13
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Inhalt
Anhang .......................................................................................... 491
A
B
C
D
Mit der Dokumentation arbeiten ....................................................
A.1 Von Guides, Klassen und Referenzen ..................................
A.2 Sich ein Thema erarbeiten .....................................................
A.3 Mehr Komfort bei der Recherche ........................................
Lokalisierung .......................................................................................
B.1 Lokalisierte Ressourcen ..........................................................
B.2 Texte lokalisieren .....................................................................
Glossar .................................................................................................
Die Buch-DVD ....................................................................................
493
493
495
496
499
499
501
503
505
Index ............................................................................................................. 507
14
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 14
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Der Begriff Objektorientierung ist in der Informatik mittlerweile
allgegenwärtig. Dieses Kapitel macht Sie mit den grundlegenden
Überlegungen dieser Methode vertraut und führt Sie theoretisch in
die Verfahren ein, die in den folgenden Kapiteln Anwendung finden
werden.
1
Objektorientierte Programmierung:
Grundlagen
Ein Paradigma bezeichnet in der Informatik unter anderem die Art und
Weise, wie in einer Programmiersprache dem Computer Anweisungen
erteilt werden. In dieser noch recht jungen Disziplin haben sich in den
letzten Jahrzehnten eine Reihe solcher Paradigmen etabliert und sind
zum Teil auch wieder verschwunden. Der zurzeit bekannteste und am
weitesten verbreitete Ansatz ist die objektorientierte Programmierung.
Ein Paradigma . . .
Auf die Entwicklung vieler jüngerer Programmiersprachen wie Java, Ruby und auch Objective-C hatte Smalltalk-80 einen großen Einfluss. Nicht
zufällig wurde Smalltalk-80 bei dem Unternehmen Xerox entwickelt, von
dessen Entwicklungsabteilung Steve Jobs eine ganze Reihe von Anregungen für die Gestaltung grafischer Benutzeroberflächen erhalten hat.
Smalltalk-80 setzt auf eine konsequente Objektorientierung. In Smalltalk-80 handelt es sich bei allem um ein Objekt.
Smalltalk als Pate
Als Objekt wird in der objektorientierten Programmierung eine Abstraktion eines reellen Gegenstands oder eines Akteurs in einem System betrachtet. Etwas genauer gesagt, handelt es sich bei einem Objekt um eine
Abstraktion von komplexeren Gegebenheiten. In einem Objekt werden
Daten (Text, Zahlen, . . . ) und Operationen auf diese Daten (Addition
von Zahlen, Ausgabe der Zeichenkette als Großbuchstaben, . . . ) gruppiert. Mit dieser Bindung zwischen den eigentlichen Daten und den für
diese verfügbaren Operationen wird den Daten ein gewisses Verhalten
gegeben.
Objekt
In der Zeit vor der objektorientierten Programmierung wurden in den
Programmiersprachen immer Daten und Operationen getrennt. Für Entwickler bedeutete dies, dass sie sehr genau darauf achten mussten, welche
Daten sie zu welchem Zeitpunkt einer bestimmten Operation unterziehen
Daten und
Operationen
25
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 25
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
1
Objektorientierte Programmierung: Grundlagen
konnten. Zum Beispiel ist die Ausgabe der Zeichenkette als Großbuchstaben bei einer Zahl nicht möglich. Der Grund für dieses Problem bestand
natürlich nicht zuletzt in der Architektur des Computers an sich, bei der
Daten und Programme strikt getrennt werden.
Die objektorientierte Programmierung hat dieses Defizit berücksichtigt
und Daten sowie die möglichen Operationen zu einem Objekt gruppiert. Sie bietet ferner Strukturierungs- und Kommunikationsmechanismen. Das eigentliche Programm entsteht dann aus einem Geflecht von
Objekten, die miteinander interagieren.
Nachrichten
an Objekte
Die Interaktion von Objekten wird über Nachrichten realisiert. Erhält ein
Objekt eine Nachricht, dann wird beim Empfänger eine Operation ausgelöst, die an den Daten des Empfängers eine Veränderung vornehmen
kann. Mit der Anweisung
[textObjekt appendString:@"Mehr Text"];
wird dem bereits existierenden Objekt mit der Bezeichnung textObjekt
die Nachricht appendString: geschickt. Diese Nachricht löst eine Operation aus, bei der dem schon vorhandenen Text weiterer Text am Ende
hinzugefügt wird. Die in dem Objekt enthaltenen Daten in Form einer
Zeichenkette werden geändert. Das empfangende Objekt reagiert also
auf Nachrichten und besitzt ein bestimmtes Verhalten. Die Beschreibung
solcher Objekte und von deren Interaktion in Form von Nachrichten ist
eines der wichtigsten Konzepte der Objektorientierung.
Kapselung
von Daten
Um diesen Grad der Abstraktion bei der Programmierung zu erreichen,
müssen die Daten innerhalb des Objekts eingekapselt werden. Der Vorteil
für den Entwickler besteht darin, dass er sich für den inneren Aufbau
des Objekts im Grunde nicht mehr interessieren muss. Wichtig sind in
diesem Zusammenhang nur die Nachrichten, die dem Objekt übermittelt
werden können, und die Kenntnis dessen, was das Objekt als Ergebnis
zurückgeben wird.
Klassen und
Instanzen
Wenn Sie eine Anwendung mit Objective-C und Cocoa entwickeln, werden Sie schnell viele Objekte erzeugen und diesen Nachrichten übermitteln. Die meisten dieser Objekte werden eine Art von Standardobjekten
sein, etwa ein Objekt, dessen Datenbestand eine Zeichenkette bildet.
»Art« bedeutet in diesem Zusammenhang, dass die erzeugten und in Ihrem Programm verfügbaren Objekte zur gleichen Klasse gehören oder
denselben Typ besitzen. Die akkurate Bezeichnung für diesen Sachverhalt lautet, dass ein Objekt die Instanz einer Klasse ist. Objekte derselben
Klasse reagieren auf dieselben Nachrichten und führen somit auch die
26
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 26
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Objektorientierte Programmierung: Grundlagen
1
gleichen Operationen auf die enthaltenen Daten aus. Die in den verschiedenen Instanzen einer Klasse enthaltenen Daten sind oft vom gleichen
Typ (Zahlen, Text, . . . ), wenn auch die Werte sich unterscheiden mögen.
Letzteres macht die Individualität eines Objekts aus. Bei den Fenstern,
die Ihnen zum Beispiel im Finder angezeigt werden, handelt es sich um
Objekte, die eine Instanz der Klasse NSWindow darstellen. Bei den einzelnen Fenstern unterscheiden sich die enthaltenen und dargestellten Daten
natürlich. Die Fenster haben eine unterschiedliche Position auf dem Bildschirm, der angezeigte Ordner ist von Fenster zu Fenster verschieden,
und auch die Art der Darstellung und die Titelzeile der einzelnen Fenster
können sich ändern.
Die Daten eines Objekts, zu denen eine Zahl, ein Text, der Titel eines Fensters und dessen Größe gehören können, werden als Attribute bezeichnet.
Bei komplexeren Attributen können diese Attribute selbst Objekte sein.
Zum Beispiel wird die Symbolleiste eines Fensters auf diese Weise realisiert. Das Objekt, das das Fenster darstellt, ist eine Instanz der Klasse
NSWindow. Diese enthält als ein Attribut eine Instanz der Klasse NSToolbar, über die die Symbolleiste realisiert wird. Diese Kompositionalität
von Objekten wird in diesem Buch immer wieder anhand von Beispielen erläutert. In objektorientierten Sprachen wie Objective-C haben Sie
von außen keinen direkten Zugriff auf die Attribute eines Objekts. Um
ein Attribut zu ändern, müssen Sie dem jeweiligen Objekt die passende
Nachricht schicken.
Attribute eines
Objekts
Die Operationen eines Objekts werden mit Methoden realisiert. Eine Methode in Objective-C entspricht einer Funktion (siehe Abschnitt 5.3), die
dann aber nicht dem gesamten Programm, sondern nur der Klasse zugeordnet wird. Um auf die Attribute eines Objekts zugreifen, die Daten also
manipulieren zu können, müssen Sie die passende Methode aufrufen. Bei
Objective-C verhält es sich so, dass die Methode ausgeführt wird, wenn
die gleichnamige Nachricht an das Objekt geschickt wird. Eine Nachricht
in der Form [textObjekt appendString:@"Mehr Text"] führt also dazu,
dass die Methode appendString: aufgerufen und ausgeführt wird.
Methode
Wenn Sie ein Objekt aus einer Klasse erzeugen, also zum Beispiel ein
neues Fenster öffnen, dann wird dies als Instanziierung einer Klasse bezeichnet. Das Objekt, in diesem Beispiel das Fenster, erhält eine eindeutige Identität. Wenn das Programm ausgeführt wird, dann wird dem Objekt eine eindeutige Adresse im Hauptspeicher zugewiesen. Die Attribute
dieser konkreten Objekte können Sie dann mit den Methoden ändern.
Die individuellen Attribute eines eindeutigen Objekts können auch als
Instanzvariablen bezeichnet werden. Wenn zwei Objekte die gleichen At-
Instanzen
27
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 27
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
1
Objektorientierte Programmierung: Grundlagen
tribute besitzen – die Fenster sehen absolut identisch aus –, dann sind
sie zwar in Bezug auf die Attribute gleich, besitzen aber nicht dieselbe
Identität, da es sich ja um zwei Fenster handelt.
Vererbung
Wenn Sie ein umfangreicheres Programm entwickeln, werden Sie irgendwann den Punkt erreichen, an dem Sie Objekte von Klassen instanziieren möchten, diese aber nicht mehr Ihren Anforderungen entsprechen.
Sie könnten natürlich eine neue Klasse implementieren, die die bereits
vorhandenen Klassen ersetzt und dieser neuen Klasse dann noch die Attribute und Methoden hinzufügen, die Sie benötigen. Dieser immer mal
wieder auftretenden Situation begegnen objektorientierte Programmiersprachen mit der Möglichkeit, dass eine neue Klasse die Eigenschaften
einer schon vorhandenen Klasse erbt. Die neue Klasse wird dann als
Subklasse bezeichnet, die schon vorhandene Klasse ist die Superklasse.
Diese Vererbung ist eine der herausragenden Eigenschaften objektorientierter Programmierung. Sie hilft, bei sehr großen Programmierprojekten wie zum Beispiel einem Betriebssystem eine wohlstrukturierte Softwarearchitektur zu definieren, da gemeinsame Eigenschaften dieser Architektur bereits in einer sehr frühen Superklasse implementiert werden
können und jede Subklasse eine Spezialisierung ihrer Vaterklasse ist.
Abbildung 1.1 Beispiele für mehrere Spezialisierungen von »NSView«
NSView
So bildet die Klasse NSView die Basis für fast alle Elemente, die in einem
Fenster erscheinen können. Das Fenster in Abbildung 1.1 enthält einige Spezialisierungen, also Subklassen von NSView. Die Schaltflächen auf
der linken Seite sind zwei Instanzen der Subklasse NSButton, der Fortschrittsbalken ist eine Instanz der Subklasse NSProgressIndicator, und
die Auswahlliste ist eine Instanz der Subklasse NSPopUpButton.
Polymorphie
Es ist möglich, dass Objekte unterschiedlicher Klassen auf die gleichen
Nachrichten unterschiedlich reagieren. Besitzen zwei Objekte Methoden
mit dem gleichen Namen, so ist deren Implementierung in der jeweiligen
Klasse unterschiedlich. Diese Möglichkeit zur Polymorphie wird bei der
Arbeit mit dem Cocoa-Framework gerne genutzt, um bestimmte Konven-
28
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 28
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Objektorientierte Programmierung: Grundlagen
1
tionen bei der Arbeit mit dem Framework zu etablieren. Beispielsweise
müssen Objekte, die von der Klasse NSView abstammen, auf die Nachricht
drawRect: reagieren. Mit dieser Nachricht wird dem Objekt mitgeteilt,
welcher für den Anwender sichtbare Bereich neu zu zeichnen ist, weil
zum Beispiel ein darüber liegendes Fenster verschoben wurde. Wie dies
jedoch geschieht und was dort gezeichnet wird, ist von Subklasse zu
Subklasse unterschiedlich.
Diese Konventionen für die Arbeit mit Objekten bilden eine Art Muster
für den Entwurf einer Anwendung. In Abschnitt 8.1.1 wird Ihnen dieses
Konzept anhand eines Beispiels erläutert.
Entwurfsmuster
29
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 29
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Index
.NET 113
.h 33
.m 33
.xcdatamodel 176, 409
/System/Library/Frameworks 286
#ifdef 247
#import 45, 60, 99
#pragma mark 480
@class 188
@count 239
@dynamic 227
@end 117
@implementation 45, 117
@interface 115
@property 124, 194
@protocol 299
@selector() 141, 354, 372, 422
@synthesize 124, 201
1:1-Beziehung 181
1:n-Beziehung 181
A
Active Build Configuration 248
add: 224
addObserver:forKeyPath:
options:context: 336
Aktivierungsregel 232, 311
alloc 118
Allowed Toolbar Items 169
Also create . . . 35, 145
Alternating Rows 217
animated 423
Anweisung 53
API 503
App ID 468
App Store 471
AppDelegate 161
AppKit 143, 401
Apple Event 503
Apple Worldwide Developer Relations Certification Authority 468
AppleScript 503
Application 140, 149
Application Delegate 404
Application Kit 143
Application Programming Interface 503
Application Support 194, 264
applicationDidFinishLaunching: 416,
418
applicationDocumentsDirectory 409
applicationShouldTerminate: 198
applicationWillFinishLaunching: 161,
164
Arithmetischer Operator 54
Array 71
Array Controller 216
ASCII 72
assert() 248, 251
Attribut 27
Attributes Inspector 38
Aufruf-Stack 255
Ausdruck 52
Auto Rearrange Content 216, 229
Automatically Hide Scrollers 217
autorelease 131
Autosave 280
Autosizing 281
B
becomeFirstResponder 444
Bedingter Ausdruck 93
beginEditing 273
Behaviour 40
Bezeichner 53
Binary data 222
Bind to 216
Bit-Operator 55
BOOL 68
Boole, George 68
break 93, 103
Breakpoint 245, 255
Bridging 483
BSD-Socket 277, 287
Build 295
Build and Go 33, 46
Build failed 253
Build Phase 297
Build-Einstellungen 168
507
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 507
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
Build-Phase 503
Bundle 193, 295, 503
Bundle Identifier 163
C
C 68, 127
Standard C99 108
Standardblibiothek 251
Zeichenkette 326
C++ 113, 127, 140
C-Zeichenketten 72
C# 127, 140
CAAnimation 387
CABasicAnimation
animationWithKeyPath: 397
autoreverses 397
CALayer 386
addAnimation:forKey: 397
canRemove 233
CAOpenGLLayer 387
Carbon 18, 503
Cascading Stylesheet 278, 344
case 91, 92
CF 321
CGFloat 69
CGPoint 397
CGSize 441
char 61, 69, 70, 72
Chrome 278
CI Filter Browser 390
CIFilter 392
filterWithName: 392
setDefaults 392
CIPixellate 392
Circular Progress Indicator 314
Class 43, 160
Class Actions 43
Class Model 481
Class Outlets 43, 160
Close 243
Cocoa 137
Cocoa Application 32, 155
Cocoa Simulator 282
Cocoa Touch Class 412
Cocoa.h 60
Cocoa
Streams 287
Code Sense 477
Codierung 369, 503
Columns 217
configurations 453
Connections Inspector 44
Content Set 221
Controller Content 221
Controller Key 216, 218
Cookie 288
copy 120, 125
Copy Files 298
copy: 366
Core Animation 385, 402
setWantsLayer: 386
Core Data 143, 355, 407, 413
Abstract 178
Add Attribute 179
Attributes 178
Class 177
commitEditing 199
Datenmodell 176
Default Value 179
Destination 181
Indexed 179
Löschregel 182
Parent 178
Relationships 178
save: 199
Transient 179
Undo 371
Core Foundation 321, 503
Core Image Filter 385, 390
Core Library 152
Core Location 402
Cover Flow 385
Cross-Compiler 403
Custom View 394
cut: 366, 369
Czarny, Eric 294
D
Data Source 414
Date Picker 219
Daten 25
Kapselung 26
Datentyp 68
Konvertierung 70
Wertebereich 69
Datum 176
dealloc 133, 415
Debug-Modus 247
508
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 508
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
Debugger 245, 254, 351
Debugger Console 246
default 93
Definition 503
Deklaration 270, 503
Delegation 139
Delegationsmethode 154
detailTextLabel 427
Dialog
Modal 268
do . . . while 103
Doc Sets 152
Dokumentation 152
double 69
drawRect: 386
E
Edit in Scope 478
Edit Project Settings 250
Editable 40
editButtonItem 421
else 90
Empty File 57
encodeWithCoder: 370
Encoding 291, 503
end 45
endEditing 273
Endlosschleife 106
Entity Name 229
Entwicklungszeit 245
Entwurfsmuster 29, 138
Errors and Warnings 253
exit code 259
F
F-Script 489
Fast Enumeration 109
Fetch Request 183
File’s Owner 148, 284, 390, 410
finalize 321, 390
First Responder 149, 157, 223, 266,
377
FIXME 480
float 69
Font Manager 149
for 104
Formatstring 246
Foundation 113, 142
Foundation.h 60
Framework 138, 402, 503
Hinzufügen 286, 460
FreeBSD 52
Funktion 96
Deklarieren 99
Kopf 96
Parameter 97
Rumpf 96
G
Garbage Collection 60, 127, 168,
402
gcc 52, 58, 245
gdb 254
Generate accessors 225
Generate Obj-C 2.0 Propertys 225
Getter-Methode 123
GitHub 488
GNU C Compiler 51
GNU Debugger 254
Google 278
Groups & Files 33
H
Header-Datei 99, 114, 145
Headers 217
Heap 64, 127
HotCocoa 487
HTML 345
HTTP 503
HUD-Panel 280
Hypertext Transfer Protocol 503
I
IBAction 36, 46, 142
IBOutlet 36, 142, 145
ibtool 500
id 76
Identity Inspector 43
IEEE 754 503
if 87, 89
Implementierung 45
Indirektion 214
Info.plist 163
informell 140
init 118
509
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 509
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
initialFirstResponder 158, 223
Initialisierung 503
initWithCoder: 370
Inspector 37, 150
AppleScript 152
Attributes 151
Bindings 151
Connections 152
Effects 151
Identity 152
Size 151
Installation Directory 296
Instanz 26, 75
Instanziierung 503
Instanzmethode 116, 153
Instanzvariable 115, 269, 351, 369
int 65, 69
Interface Builder 36, 148
Hilfslinien 39
Inspector 37
Library 37
Simulated User Interface Elements 404
Interface Builder Identity 216
iPhone
Identifier 468
iPhone Developer Program 466
iPhone Distribution Certificate 471
iPhone OS 113
iPhone Simulator 403
IsSecure 456
J
Java 25, 113, 127, 140, 152
JavaScript 278, 388, 488
Jobs, Steve 25
JSCocoa 488
K
Kategorie 140, 192, 269, 320
Key Equiv. 271
Key-Value Coding 213, 504
Operatoren 239
Key-Value Observing 142, 318, 388,
504
Keychain 317
Klasse 26
Deklaration 114, 115
Implementierung 114, 117
Klassenmethode 122, 153
Kommentar 55
Konsole 246
Konstante 154
Konventionen 51
kSecAccountItemAttr 328
kTextFeldSection 431
Kurzbefehl 270
KVC 504
KVO 504
L
Label 169
Laufzeit 245
Laufzeitsystem 504
leftBarButtonItem 421
Library 37, 149
Linked Frameworks 286, 296
Linken 504
Linux 52
Liste 71
Terminierung 72
Localizable.strings 501
Localization native development region 424
Logischer Operator 55, 88
Lokalisierung 155
long 69
M
MacRuby 486
main() 60, 143
MainMenu 37, 149, 159
MainMenu.xib 37
MainWindow.xib 404, 410
makeKeyAndOrderFront 231
makeKeyAndOrderFront: 159
makeKeyAndVisible 416
Managed Object Class 225
Mediator 139
Menübefehl
Kurzbefehl 270
Menüeintrag
Deaktivieren 310
Menüpunkt
Hinzufügen 243, 270
Umbenennen 242
510
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 510
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
NSArrayController 213, 216, 229
Auswahl prüfen 313
setSelectedObjects: 364
NSAssert() 248
NSAttributedString 265
dataFromRange:
documentAttributes:error: 301
NSAutoreleasePool 132
NSButton 28, 40, 145
NSCoder 370
NSComparisonResult 92
N
NSController 213
NSData 290, 362, 363, 377
Nachricht 26, 75
initWithContentsOfURL: 292
Navigation Controller 411
writeToFile:atomically: 381
Navigation Item 411
NSDate 176
Navigation-based Application 407
NSDateFormatter 431
navigationItem 421
NSDictionary 82, 110
NeXT 137
dictionaryWithContentsOfFile: 83
NeXT Interface Builder 36
dictionaryWithObjectsAndKeys: 82
nextKeyView 158, 223
objectForKey: 83
NeXTStep 36, 137, 483, 504
NSDictionaryController 213
Nib 36
NSDragPboard 361
nil 81
NSEntityDescription 204
NO 69
insertNewObjectForEntityForName:
No Editor 33
inManagedObjectContext: 204
noErr 322
NSError 245, 260, 322
Notification 154
NSExcludedElementsNotification Center 141
DocumentAttribute 302
NS 137
NSFetchedResultsController 413, 418
NS_BLOCK_ASSERTIONS 251
objectAtIndexPath: 426
NSAddTemplate 169, 229
performFetch: 423
NSAlert 245, 260, 262
NSFetchRequest
207, 237
addButtonWithTitle: 263
setEntity: 204
setInformativeText: 263
setSortDescriptors: 205, 237
setMessageText: 263
NSFileHandle 377, 380
NSAlertFirstButtonReturn 263
readDataToEndOfFile 380
NSApp 272
beginSheet:modalForWindow:modalDelegate: NSFileManager 197, 377, 382
copyPath:toPath:handler: 383
didEndSelector:contextInfo: 272
createDirectoryAtPath:attributes: 197
endSheet: 273
movePath:toPath:handler: 382
mainWindow 347
removeFileAtPath:handler: 383
runModalForWindow: 272
NSFindPboard 361
stopModal 273, 274
NSFontPboard 361
NSApplication 139, 143, 160, 198,
NSGeneralPboard 361
504
NSInteger 69
NSApplicationSupportDirectory 196
NSInvocation 370
NSApplicationTerminateReply 198
NSInvocationOperation 351
NSArray 80, 176
initWithTarget:
arrayWithObjects: 81
selector:object: 354
objectAtIndex: 81, 107
Menu Item 270
MetaWeblog-API 293
Methode 27
Microsoft 267
Mitteilung 154
Mode 229
Model Key Path 216, 238
Model-View-Controller 139
Multithreading 350
511
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 511
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
NSKeyedArchiver 370
NSLayoutManager 265
NSLocalizedString 419, 501
NSLog() 246
NSMakePoint 397
NSManagedContext
insertObject: 204
NSManagedObject 174, 177, 226
awakeFromInsert 226, 227
NSManagedObjectContext 174, 409,
413
addObject: 235
objectWithID: 235
NSManagedObjectModel 174, 409
fetchRequestFromTemplateWithName:
substitutionVariables: 207
NSMutableArray 81
insertObject:atIndex: 81
removeLastObject 82
NSMutableAttributedString 266
addAttribute:value:range: 267
NSMutableDictionary 84
setObject:forKey: 84
NSMutableString 79
addObject: 82
appendString: 79
insertString:atIndex: 79
UTF8String 80
NSMutableURLRequest 289
NSNetwork 311
NSNoSelectionMarker 313
NSNotificationCenter 388, 504
keyboardWasShown: 446
NSNumber 77
compare: 78, 92
floatValue 77
integerValue 77, 84
numberWithFloat: 77
numberWithInteger: 83
NSObject 42, 115, 118, 146, 152
performSelectorOnMainThread:withObject:
waitUntilDone: 355
NSObjectController 213
NSOKButton 380
NSOpenPanel 377
runModalForTypes: 379
setAllowsMultipleSelection: 378
setCanChooseDirectories: 378
NSOperation 351
NSOperationQueue 292, 340, 349,
351
addOperation: 355
new 352
NSOrderedAscending 92
NSOrderedDescending 92
NSOrderedSame 92
NSOSStatusErrorDomain 322
NSPageLayout 340
NSPanel 229, 267, 280
NSPasteboard 272, 359
availableTypeFromArray: 364
dataForType: 362
declareTypes:owner: 369
setData:forType: 369
NSPDFPboardType 361
NSPersistentStore 175
NSPersistentStoreCoordinator 175,
196, 409
NSPopUpButton 28
NSPredicate 185
NSPreferencesGeneral 170
NSPrintInfo 340
sharedPrinterInfo 347
sharedPrintInfo 340
NSPrintOperation 340
runOperation 340
runOperationModal
ForWindow:delegate:
didRunSelector:contextInfo: 347
NSPrintViewOperation 347
printOperationWithView:printInfo: 347
NSProgressIndicator 28, 309, 313
Display When Stopped 314
Spining 314
startAnimation: 315
stopAnimation: 315
NSRange 267, 363
NSRect 341
NSRemoveTemplate 170, 229
NSRTFPboardType 360
NSRulerPboard 361
NSSavePanel 377, 380
runModal 381
setAllowedFileTypes: 381
setRequiredFileType: 381
NSSearchPathForDirectoriesInDomains() 195
NSSet 176, 221
NSSortDescriptor 205, 237
512
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 512
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
initWithKey:ascending: 237
NSString 61, 78
initWithContentsOfURL: 292
initWithData:encoding: 291, 363
isEqualToString: 95
length 78
paragraphRangeForRange: 363
stringWithFormat: 61
stringWithUTF8String: 78, 119
substringWithRange: 363
UTF8String 79
NSStringPboardType 360, 363
NSTerminateCancel 261
NSTerminateNow 199, 262
NSText
copy: 366
NSTextField 38, 145
NSTextStorage 202, 265
addAttribute:value:range: 274
appendAttributedString: 202
NSTextView 222, 265
alignLeft: 266
scrollRangeToVisible: 202
selectedRange 272
setFont: 266
textStorage 202
underline: 266
NSTIFFPboardType 361
NSToolbar 27
NSTreeController 213
NSUInteger 69
NSUndoManager 370
registerUndoWithTarget:
selector:object: 372
setActionName: 374
NSURL 197, 288
URLWithString: 273
NSURLConnection 289
connection:didFailWithError: 292
connection:didReceiveData: 292
connection:didReceiveResponse: 292
connectionDidFinishLoading: 292
sendSynchronousRequest:
returningResponse:error: 290
NSURLHTTPResponse 289
NSURLRequest 289
cachePolicy: 289
requestWithURL: 289
timeoutInterval: 289
NSURLResponse 289
NSUserDefaultController 240
NSUserDefaults 162, 453
registerDefaults: 164, 165
setObject:forKey: 167
standardUserDefaults 165
stringForKey: 166
synchronize 167
NSUserDomainMask 196
NSUserFullName() 457
NSValue 397
valueWithPoint: 397
NSView 28, 158, 340
Undo 371
NSWindow 27, 156, 280
makeKeyAndOrderFront: 171
windowDidBecomeKey: 165
windowDidResignKey: 165
NSWindowController 282, 283, 405
initWithMainFrameURL: 284
showWindow: 285
NULL 324
Null-Zeichen 72
O
objc_startCollectorThread() 128
objectID 235
Objective-C 25, 51
Objective-C class 34
Objective-C Garbage Collection 168
Objective-C NSWindowController
subclass 282
Objekt 25
Allozieren 118
Initialisieren 118
Observer 141
opacity 386, 389
openDocument: 378
OpenGL 387
Operation 25
Operator 54
Outlet 44, 146, 160
P
Pal. Label 169
Panel
orderOut: 273
Parameter 116
paste: 366
513
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 513
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
pboard 359
PDF 339
PDFKit 143
persistentStoreCoordinator 409
Polymorphie 28
pool 132
Portable Operating System Interface 504
POSIX 277, 504
PostScript 339
Predicate 184
Preferences. . . 155
PreferenceSpecifiers 455
Prepares Content 216, 229
Preprocessor Macros 247
presentError: 262
print: 341
printf() 60, 61
Programmcode 64
Project Builder 17
Property 123
Property List Editor 162, 317
Protokoll 140, 300
Provisioning Profile 469
Proxy 288
PSGroupSpecifier 455
PSTextFieldSpecifier 455
pt 347
Push Button 40
puts() 91
PyObjC 483
Python 65, 68, 127, 483
Q
Quartz 504
QuartzCore 387
QuickLook 280
R
Rückgabewert 116, 259
readonly 125
Received Actions 146
Reference Counting 113, 127
Register 64
release 129
Release When Closed 157
remove: 224
Resize 157
Responder Chain 366
Responder-Kette 365
respondsToSelector: 141
retain 129
return 62, 93, 97
Rich-Text-Format 267
rightBarButtonItem 421
Root View Controller 411
Root.plist 454
Root.strings 454
RTF 360
Ruby 25, 65, 68, 127, 486
Ruby on Rails 487
RubyCocoa 486
runModal 263
S
Safari 278, 341
saveDocumentAs: 380
scanf() 60, 61
Schlüsselwort 55
SecKeychainAddGenericPassword() 317, 322
SecKeychainFindGenericPassword() 318, 324
SecKeychainItemModifyAttributesAndData() 318
SecKeychainItemModifyAttributesAndData() 325
SecKeychainItemRef 318
Secure Text Field 157
Security Framework 318
selection 218
selector 159
self 119
Semikolon 53
Sent Actions 159
Separator Menu Item 270
Setter-Methode 123
settings 453
Settings Bundle 454
Shared User Defaults Controller 240
Sheet 268
short 69
Show Message Bubble 258
SIGABRT 252
Simulate Interface 282
Simulator - 3.0 Debug 417
514
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 514
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
Singleton 504
sleep() 350
Smalltalk-80 25
Software Development Kit 401, 504
Spinning Beachball 350
SQL 184, 504
SQLite 384, 409
Square Button 228
Stack 64
strlen() 322
struct 73
Structured Query Language 184, 504
super 119
switch 87, 91
Symbolleiste anpassen 169
syntax error 53
T
Tab Bar Application 408
Table Column 217
Table View 217
Target-Action 142
Text Field 38
TextEdit 267
TextView 222, 265
Thread 350, 504
thread safe 355
Timeout 290
Title 38
to-many-Beziehung 181
TODO 480
Toolbar Item Actions 169
Typecasting 70, 326
U
UIAlertView 458, 463
UIApplication 401, 404, 410
ActivityIndicatorVisible 462
UIApplicationDelegate 404
applicationDidReceiveMemoryWarning: 404
applicationDidFinishLaunching: 404
UIBarButtonItem 421
UIBarButtonSystemItemAdd 421
UIControl 440
UIDatePicker 439, 440
UIKeyboardBoundsUserInfoKey 448
UIKit 143, 401
UILabel 426
UINavigationController 405, 410
pushViewController:animated: 437
UITableView 405, 410, 412, 418
Cell 426
deleteRowsAtIndexPaths:withRowAnimation: 428
deselectRowAtIndexPath:animated: 465
numberOfSectionsInTableView: 433
reload 419
tableView:numberOfRowsInSection: 425,
433
UITableViewCell 426
bounds 435
contentView 435
indexPath 426
UITableViewCellAccessoryDisclosureIndicator 434
UITableViewCellEditingStyleDelete 428
UITableViewCellStyleSubtitle 426
UITableViewCellStyleValue2 434
UITableViewController 405, 412
UITableViewDataSource 424, 433
numberOfSectionsInTableView: 425
tableView:cellForRowAtIndexPath: 426
tableView:commitEditingStyle:
forRowAtIndexPath: 428
UITableViewDelegate 433, 465
tableView:didSelectRowAtIndexPath: 437,
450
tableView:heightForRowAtIndexPath: 434
UITextAlignmentCenter 436
UITextField 401, 439
UITextView 439, 441
UITextViewDelegate
textViewDidEndEditing: 448
UIView 401, 404, 410
UIViewController 404, 410, 411
viewDidAppear: 420
viewDidDisappear: 420
viewDidLoad 420
viewDidUnload 420
viewWillAppear: 420
viewWillDisappear: 420
UIViewController subclass 439
UIWindow 410
uncaught exception 484
Undo 371
unsigned char 69, 70
unsigned int 69
unsigned long 69
515
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check: äöüÄÖÜ.
S. 515
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
Index
unsigned short 69
URL Loading System 288, 349, 406
Use Core Data for storage 408
UTF-16 503
UTF-8 78, 322, 503
V
validateToolbarItem: 312
validateUserInterfaceItem: 364
Value with Pattern 239
valueForKey: 214
valueForKeyPath: 214
Variable
Definition 65
Global 67, 98
Lokal 65
Vererbung 28, 42, 481
Vergleichsoperator 54, 87
Version Control System 36
View 504
View XIB 429
viewWillAppear: 423
Visible At Launch 157, 268
void 99, 116
W
Web Services Framework 288, 294
WebKit 143, 278, 341
WebKit.h 283
WebObjects 152
WebPanelController 285
WebView 281, 388
documentView 347
frameView 347
initWithMainFrameURL: 283
loadHTMLString:baseURL: 345
mainFrame 347
setFrameLoadDelegate: 345
setMainFrameURL: 284
WebDocumentView 347
webView:didFinishLoadForFrame: 346
WebViewProgressFinishedNotification 388
WebViewProgressStartedNotification 388
while 101
Window 37, 149
Window-based Application 407
windowDidBecomeKey: 390
windowDidLoad 284, 388
windowDidResignKey: 390
windowWillClose: 391
windowWillReturnUndoManager: 371
With XIB for user interface 439
WordPress 293
Wrapper 317
Wrapping Label 395
X
Xcode 254, 475
Add Localization 499
Groups & Files 482
Lesezeichen 479
Make File Localizable 499
Model Browser 481
Organizer 470
Xerox 25
Xib 36, 504
Xib-Datei
Einbinden 280
XML-RPC 293, 460
xmlrpc.php 305
Y
YES 69
Z
Zoll 347
Zuweisungsoperator 54, 88
Zwischenablage 359
516
K. Surendorf und M. Hardt, Einstieg in Objective-C und Cocoa
Galileo Press, ISBN: 978-3-8362-1310-3
Layout: gp.cls, Version 3.2.005 (15th August 2009), (C) Dr. Daniel Lauer, Bonn
Mit TEX bearbeitet am 8. September 2009, 9:06 Uhr Umlaut-Check:
S. 516
Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – normal breit – Zoom auf 100.0%
äöüÄÖÜ.
Herunterladen