Inhaltsverzeichnis
Geleitwort
Vorwort
1 Hello iPhone
1.1 Voraussetzungen
1.1.1 Das SDK und die Entwicklerprogramme
1.1.2 Der Simulator
1.1.3 Test der Arbeitsumgebung
1.2 App geht’s
1.2.1 Ein neues Projekt
1.2.2 Sehr verbunden
1.2.3 Netzwerk und Ausgabe
1.2.4 Test auf einem Gerät
1.2.5 Entwicklerzertifikat und Entwicklungsprofile
1.2.6 Apps mit speziellen Funktionalitäten
1.2.7 Profilprobleme
1.3 Zusammenfassung
2 Die Reise nach iOS
2.1 Objektorientierte Programmierung
2.1.1 Objekte und Abstraktion
2.1.2 Vererbung
2.1.3 Überschreiben von Methoden und spätes Binden
2.1.4 Objektorientierung in Objective-C
2.1.5 Die Architektur von iOS-Programmen
2.2 Hefte raus, Klassenarbeit!
2.2.1 Controller und View in der Praxis
2.2.2 Modellbau
2.2.3 Initializer und Methoden
2.2.4 Vererbung
2.2.5 Kategorien
2.2.6 Protokolle
2.2.7 Vorwärtsdeklarationen
2.2.8 Kommunikation zwischen den Schichten
2.2.9 Delegation
2.2.10 Key-Value-Coding
2.3 Speicherverwaltung und Propertys
2.3.1 Stack und Heap
2.3.2 Starke und schwache Referenzen
2.3.3 Autoreleasepools
2.3.4 Propertys und Accessoren
2.4 In den Tiefen der Speicherverwaltung
2.4.1 Manuelles Referenzzählen
2.4.2 Die Speicherverwaltungsregeln für das manuelle Referenzzählen
2.4.3 Autoreleasepools
2.4.4 Der Referenzzähler
2.4.5 Automatisches Referenzzählen
2.4.6 Weakie und die starken Zeiger
2.4.7 Einzelgänger
2.4.8 Migration bestehender Projekte
2.5 Das Foundation-Framework
2.5.1 Mutables und Immutables
2.5.2 Elementare Klassen
2.5.3 Collections
2.6 Blöcke
2.6.1 Rückruffunktionen
2.7 Namenskonventionen
2.8 Zusammenfassung
3 Sehen und anfassen
3.1 Eigene Viewklassen in Cocoa Touch
3.1.1 Zeichnen in Cocoa Touch
3.1.2 Zeitberechnung
3.1.3 View-Erzeugung über Storyboards
3.1.4 Aktualisierung der Zeitanzeige
3.1.5 Wiederverwendbarkeit von Views
3.1.6 Zeichenfarbe festlegen
3.2 Views und Viewcontroller
3.2.1 Outlets
3.2.2 Outlet-Collections
3.2.3 Containerviews
3.2.4 View-Hierarchien
3.2.5 Actions
3.2.6 Ereignisse
3.2.7 Controlzustände und Buttons
3.2.8 Touch-A, Touch-A, Touch Me
3.2.9 Übergänge
3.2.10 Ein kleines Intermezzo über Labels
3.2.11 Beliebige Objekte im Storyboard
3.2.12 Der Lebenszyklus eines Viewcontrollers
3.2.13 Speicher- und Ressourcenverwaltung des Viewcontrollers
3.3 Lokale Benachrichtigungen
3.3.1 Benachrichtigungen versenden
3.3.2 Benachrichtigungen verarbeiten
3.4 Eine App für alle
3.4.1 Das Retina-Display
3.4.2 Launch-Images
3.4.3 Sprachkursus für die App
3.4.4 Es funktioniert nicht
3.4.5 Unterstützung älterer iOS-Versionen
3.4.6 Base-Internationalisierung ausschalten
3.4.7 Universelle Apps
3.5 Geräteausrichtungen, Autosizing und Autolayout
3.5.1 Flexible Views dank Autosizing
3.5.2 Autolayout
3.5.3 Restriktionen im Interface-Builder festlegen
3.5.4 Autolayout und Lokalisierung
3.6 Fehlersuche
3.6.1 Logging
3.6.2 Der Debugger
3.6.3 Breakpoints verwalten
3.6.4 Die Debugger-Konsole
4 Alles unter Kontrolle
4.1 Viewcontroller, XIBs und Storyboards
4.1.1 Erstellung von Viewcontrollern über XIB-Dateien
4.1.2 Applikationsinitialisierung
4.1.3 Storyboards
4.1.4 Modale Dialoge
4.1.5 Pop-over
4.1.6 Übergänge
4.2 Der Navigationcontroller
4.2.1 Viewcontroller anzeigen und entfernen
4.2.2 Die Navigationsleiste
4.2.3 Der Zurück-Button
4.2.4 Gehe drei Felder zurück
4.2.5 Die Werkzeugleiste
4.3 Navigation- und Pop-over-Controller in der Praxis
4.3.1 Navigationcontroller anlegen
4.3.2 Einen Dialog für die Einstellungen gestalten
4.3.3 Früher war alles besser ...
4.3.4 Einstellungen dauerhaft speichern
4.3.5 Storyboard lokalisieren
4.3.6 Anpassung an das iPad
4.4 Der Splitviewcontroller
4.4.1 Das Splitviewcontroller-Delegate
4.4.2 Eine Projektvariante erstellen
4.4.3 Rotationsverhalten für einzelne Viewcontroller ändern
4.4.4 Anlegen eines Splitviewcontrollers
4.4.5 Autolayout-Restriktionen per Programmcode erstellen
4.4.6 Anzeige des Masters
4.5 Der Tabbarcontroller
4.5.1 Aufbau einer Reiternavigation
4.5.2 Plaketten
4.5.3 Für ein paar Controller mehr
4.6 Der Page-Viewcontroller
4.6.1 Einen Page-Viewcontroller erzeugen
4.6.2 Die Datenquelle und das Delegate
4.7 Eigene Container- und Subviewcontroller
4.7.1 Container- und Subviewcontroller
4.7.2 Verwaltung der Subviewcontroller
4.7.3 ContainerViews leicht gemacht
4.8 Regelbasierte Anpassung der Oberfläche
4.8.1 Gestaltungsregeln ...
4.8.2 ... und Gestaltungsmöglichkeiten
5 Daten, Tabellen und Controller
5.1 Benachrichtigungen
5.1.1 Benachrichtigungen empfangen
5.1.2 Eigene Benachrichtigungen verschicken
5.2 Layoutanpassungen und Viewrotationen
5.2.1 Lang lebe das Rotationsprinzip!
5.2.2 Anpassung des Layouts
5.3 Core Data
5.3.1 Datenmodellierung
5.3.2 Implementierung von Entitätstypen
5.3.3 Dokumentenordner und Application-Support-Verzeichnis
5.3.4 Einbindung von Core Data
5.3.5 Der Objektkontext
5.3.6 Die Nachrichten des Objektkontexts
5.3.7 Anlegen und Ändern von Entitäten in der Praxis
5.4 Texte, Bilder und Töne verwalten
5.4.1 Viewanpassungen für die Systemleisten
5.4.2 Die Tastatur betritt die Bühne
5.4.3 Fotos aufnehmen
5.4.4 Töne aufnehmen und abspielen
5.5 Tableviews und Core Data
5.5.1 Tableviews
5.5.2 Tabellenzellen gestalten
5.5.3 Zellprototypen über das Storyboard definieren
5.5.4 Zellprototypen per Programmcode bereitstellen
5.5.5 Der Target-Action-Mechanismus und Tabellenzellen
5.5.6 Zellen löschen
5.6 Core Data II: Die Rückkehr der Objekte
5.6.1 Prädikate
5.6.2 Aktualisierung des Tableviews
5.6.3 Das Delegate des Fetched-Results-Controllers
5.6.4 Tabelleneinträge suchen
5.7 Inhalte teilen
5.7.1 Integration in das Fototagebuch
5.7.2 Eigene Aktivitäten bereitstellen
5.8 Collectionviews
5.8.1 Der Collectionviewcontroller
5.8.2 Gitterdarstellung
5.8.3 Zellen und die Datenquelle
5.8.4 Ergänzende Views
5.8.5 Freie Layouts
5.8.6 Freie Layouts und ergänzende Views
5.8.7 Decorationviews
6 Models, Layer, Animationen
6.1 Modell und Controller
6.1.1 iOS Next Topmodel
6.1.2 View an Controller
6.1.3 Gerätebewegungen auswerten
6.1.4 Modell an Controller
6.1.5 Undo und Redo
6.1.6 Unit-Tests
6.2 Als die Views das Laufen lernten
6.2.1 Animationen mit Blöcken
6.2.2 Transitionen
6.2.3 Zur Animation? Bitte jeder nur einen Block!
6.3 Core Animation
6.3.1 Layer
6.3.2 Vordefinierte Layer-Klassen
6.3.3 Der Layer mit der Maske
6.3.4 Unser Button soll schöner werden
6.3.5 Spieglein, Spieglein an der Wand
6.3.6 Der bewegte Layer
6.3.7 Daumenkino
6.3.8 Relativitätstheorie
6.3.9 Der View, der Layer, seine Animation und ihr Liebhaber
6.3.10 Transaktionen
6.3.11 Die 3. Dimension
6.4 Scrollviews und gekachelte Layer
6.4.1 Scrollen und Zoomen
6.4.2 Die Eventverarbeitung
6.4.3 Scharfe Kurven
6.4.4 Ganz großes Kino
6.4.5 PDF-Dateien anzeigen
6.5 Über diese Brücke musst du gehen
6.5.1 Toll-free Bridging und ARC
6.5.2 C-Frameworks und ARC
6.6 Was Sie schon immer über Instruments wissen wollten, aber nie zu fragen wagten
6.6.1 Spiel mir das Lied vom Leak
6.6.2 Ich folgte einem Zombie
6.6.3 Time Bandits
6.6.4 Instruments und der Analyzer
7 Programmieren, aber sicher
7.1 iOS und Hardware
7.2 Bedrohungen, Angriffe, Sicherheitslücken und Maßnahmen
7.2.1 Arten von Sicherheitslücken
7.3 Threat Modeling
7.3.1 Erstellen eines Datenflussdiagramms
7.3.2 STRIDE
7.3.3 Generische Designgrundsätze
7.3.4 Threat Modeling aus der Tube – das Microsoft SDL Threat Modeling Tool
7.4 Sichere Programmierung in der Praxis
7.4.1 Authentisierung
7.4.2 Keychain
7.4.3 Jailbreak-Erkennung
7.4.4 Verzeichnisse und Dateiattribute
7.4.5 Event-Handling
7.4.6 Screenshots
7.4.7 Sorgfältiger Umgang mit der Bildschirmsperre
7.4.8 Struktur und Ordnung im Sandkasten
7.4.9 UDID ist tot. Was nun?
7.4.10 Base64
7.5 iCloud
7.5.1 Denkanstöße
7.5.2 iCloud in der Praxis
7.5.3 Key-Value-Storage
7.5.4 Verschlüsselung (in der Cloud)
8 Datenserialisierung und Internetzugriff
8.1 Ich packe meine Texte
8.1.1 Serialisierung von Zeichenketten
8.1.2 Zeichenkodierungen
8.1.3 Unicode und UTF-8
8.1.4 Die Zeichenkodierung erkennen
8.1.5 Zeichenketten konvertieren
8.2 JSON und die URLonauten
8.2.1 Das JSON-Format
8.2.2 Einfacher YouTube-Zugriff mit JSON
8.2.3 URLs erstellen
8.2.4 JSON-Dokumente schreiben
8.2.5 Verwendung des JSONKits als Parser
8.3 XML
8.3.1 XML in Kürze
8.3.2 Property-Listen
8.3.3 SAX
8.3.4 DOM und XPath
8.3.5 Der Tag der Entscheidung
8.4 Daten, Daten, ihr müsst wandern
8.4.1 Synchrone Kommunikation
8.4.2 Komplexe Anfragen
8.4.3 Auf dem Webserver nichts Neues
8.4.4 Asynchrone Kommunikation
8.4.5 Große Datenmengen der Übertragung
8.4.6 Passwortabfragen
8.4.7 Sicher kommunizieren mit TSL (SSL)
8.4.8 Hier geht die POST ab
8.4.9 Dateiupload
8.4.10 Überprüfung der Erreichbarkeit
8.5 Karten
8.5.1 Karten darstellen
8.5.2 Koordinatensysteme
8.5.3 Geokoordinaten bestimmen
8.5.4 Eigene Kartenbeschriftungen
8.5.5 Routen
9 Multimedia
9.1 Schönschrift
9.1.1 Texthervorhebungen über Attributed Strings
9.1.2 Weitere Anzeigemöglichkeiten
9.1.3 Text mit Hervorhebungen über Dokumente erzeugen
9.1.4 Zeichenketten in Farben umwandeln
9.2 Einbindung von HTML-Dokumenten
9.2.1 Anzeige von HTML-Dokumenten
9.2.2 Javascript-Dateien einbinden
9.2.3 Das Delegate des Webviews
9.2.4 Webviews und Scrollviews
9.2.5 Der Viewport
9.2.6 Dynamische HTML-Seiten
9.2.7 HTML-Sonderzeichen maskieren
9.2.8 Javascript ausführen
9.2.9 Ereignisübergabe an die Applikation
9.3 Antwortcaching und Offlinemodus
9.3.1 Bilder nachladen
9.3.2 Cache Me If You Can
9.3.3 Let’s go offline
9.3.4 Protokolle
9.3.5 Ein datenbankbasierter Offlinecache
9.4 Videos
9.4.1 YouTube-Videos einbetten
9.4.2 Wiedergabe über das Media-Player-Framework
9.4.3 Vorschaubilder erzeugen
9.4.4 Videos über Layer anzeigen
10 Jahrmarkt der Nützlichkeiten
10.1 Ein Rundgang durch Xcode
10.1.1 Die Navigatorspalte
10.1.2 Der Utilitybereich
10.1.3 Der Editor
10.1.4 Autovervollständigung und Code-Schnipsel
10.1.5 Tastaturkurzbefehle
10.1.6 Tabs und Fenster
10.1.7 Simulatoren und Dokumentation nachladen
10.1.8 No Country for Old Man-Pages
10.1.9 Projekte dokumentieren
10.1.10 Snapshots
10.2 Refactoring
10.2.1 Refactorings in Xcode
10.2.2 Methoden auslagern
10.2.3 Oberklassen erzeugen und Methoden verschieben
10.3 Der Organizer
10.3.1 Die Geräteverwaltung
10.3.2 Archive und die Archivverwaltung
10.3.3 Projektverwaltung
10.4 Das Buildsystem
10.4.1 Workspaces, Projekte und Targets
10.4.2 Klassen in Bibliotheken auslagern
10.4.3 Bibliotheken wiederverwenden
10.4.4 Konfigurationen
10.4.5 Targets
10.4.6 Schemata
10.5 Ad-hoc-Distributionen
10.5.1 Geräteregistrierung
10.5.2 App-Installation über das iPhone-Konfigurationsprogramm
10.5.3 Ad-hoc-Distributionen über einen Webserver
10.6 Versionsverwaltung mit Git
10.6.1 Lokale Git-Repositorys
10.6.2 Arbeiten mit verteilten Git-Repositorys
10.6.3 Git-Integration in Xcode
10.6.4 Einbindung existierender Git-Repositorys
10.6.5 GitX
10.6.6 SourceTree
10.6.7 Das Kommandozeilenprogramm von Git
10.6.8 Der eigene Git-Server
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.