Thomas Sillmann
Swift im Detail
Inhalt
8
1 Apples neue Programmiersprache: Swift
14
1.1 Willkommen bei Swift!
14
1.2 Warum Swift?
14
1.3 Swift und Objective-C
15
1.4 Voraussetzungen für die Swift-Entwicklung
16
1.4.1 Xcode
16
1.4.2 Mac
17
1.5 Swift-Ressourcen
18
1.5.1 Apples Entwickler-Dokumentation
18
1.5.2 Swift-Blog
20
1.5.3 Code-Beispiele des Autors
21
1.5.4 Das Internet
22
2 Grundlagen der Programmierung
24
2.1 Variablen und Konstanten
28
2.1.1 Type Inference und Type Annotation
30
2.2 Abfragen und Schleifen
31
2.2.1 Bedingungen
31
2.2.2 If
34
2.2.3 While
36
2.2.4 Do-While
37
2.2.5 For
38
2.2.6 For-In
39
2.2.7 Switch
41
2.2.8 Control Transfer Statements
44
2.3 Kommentare
46
2.3.1 Verschachtelte Kommentare
46
2.3.2 Schlüsselwörter für Kommentare
47
2.4 Fundamental Types
48
2.4.1 Strings und Characters
49
2.4.2 Arrays
53
2.4.3 Dictionaries
62
2.4.4 Tuples
71
2.5 Funktionen
73
2.5.1 Grundaufbau und Aufruf einer Funktion
74
2.5.2 Eine erste einfache Funktion
74
2.5.3 Funktion mit Parametern
75
2.5.4 Funktion mit Rückgabewert
76
2.5.5 Funktion mit mehreren Rückgabewerten
79
2.5.6 Funktion mit optionalem Rückgabewert
80
2.5.7 Funktion mit optionalen Parametern
81
2.5.8 Local und External Parameter Names
82
2.5.9 Funktionen mit Standardwerten für Parameter
85
2.5.10 Funktionen mit beliebiger Parameterzahl
87
2.5.11 Funktionen mit Variablen als Parameter
88
2.5.12 Funktionen mit veränderbaren In-Out-Parametern
89
2.5.13 Function Types
91
2.5.14 Verschachtelte Funktionen
95
2.6 Closures
97
2.6.1 Closures als Variablen und Konstanten
98
2.6.2 Closures als Parameter für Funktionen
99
2.6.3 Kurzschreibweise für Closures als Parameter von Funktionen
103
2.7 Enumerations
105
2.7.1 Kurzschreibweisen für Enumerations
108
2.7.2 Enumerations mittels Switch abfragen
109
2.7.3 Zusätzliche Informationen in Enumeration-Werten speichern
110
2.7.4 Member einer Enumeration feste Werte zuweisen
112
2.7.5 Enumerations sind Value Types
114
2.8 Structures
115
2.8.1 Erstellen einer neuen Instanz
116
2.8.2 Structures mit Properties
117
2.8.3 Structures mit Methoden
121
2.8.4 Structures sind Value Types
122
3 Objektorientierte Programmierung mit Swift
124
3.1 Swift und objektorientierte Programmierung
124
3.2 Klassen
125
3.2.1 Erstellen und Verwenden einer neuen Instanz
126
3.2.2 Initialisierung von Objekten einer Klasse
127
3.2.3 Klassen sind Reference Types
130
3.2.4 Unterschiede zwischen Klassen und Strukturen
132
3.3 Properties
133
3.3.1 Stored Properties
134
3.3.2 Computed Properties
140
3.3.3 Property Observers
146
3.3.4 Globale und lokale Variablen
150
3.3.5 Type Properties
151
3.4 Methoden
154
3.4.1 Instance Methods
154
3.4.2 Type Methods
161
3.5 Subscripts
163
3.5.1 Aufbau von Subscripts
163
3.5.2 Subscript Overloading
167
3.6 Optionals
168
3.6.1 Forced Unwrapping
170
3.6.2 Optional Binding
173
3.6.3 Implicit Unwrapping
174
3.6.4 Optional Chaining
176
3.7 Vererbung
183
3.7.1 Vererbung im Detail
184
3.7.2 Überschreiben von Properties, Methoden und Subscripts
187
3.7.3 Zugriff auf Properties, Methoden und Subscripts der Superklasse
191
3.8 Initialisierung
192
3.8.1 Grundaufbau eines Initializers
192
3.8.2 Initializer mit Parametern
194
3.8.3 Default Initializer
196
3.8.4 Local Parameter Names und External Parameter Names in Initializern
198
3.8.5 Initializer und Optionals
199
3.8.6 Initializer und Constant Stored Properties
201
3.8.7 Erstellen mehrerer Initializer
202
3.8.8 Initializer und Vererbung
207
3.8.9 Deinitialisierung
225
3.9 Speicherverwaltung mit ARC
227
3.9.1 Strong References und Reference Cycles
228
3.9.2 Weak References
231
3.9.3 Unowned References
234
3.9.4 Best Practices zur Speicherverwaltung
240
3.9.5 Closure Capture List
240
3.10 Type Casting
245
3.10.1 Typ prüfen mit is
246
3.10.2 Downcasting mit as
247
3.10.3 Any und AnyObject
248
3.11 Nested Types
251
4 Weiterführende Sprachmerkmale von Swift
254
4.1 Extensions
254
4.1.1 Syntax
255
4.1.2 Computed Properties
255
4.1.3 Methoden
256
4.1.4 Initializer
257
4.1.5 Subscripts
258
4.1.6 Nested Types
259
4.2 Protocols
260
4.2.1 Syntax
261
4.2.2 Deklaration von Properties
262
4.2.3 Deklaration von Methoden
264
4.2.4 Deklaration von Initializern
267
4.2.5 Protocol Type
270
4.2.6 Delegation
271
4.2.7 Protocol Composition
275
4.2.8 Protocols und Extensions
277
4.2.9 Vererbung
279
4.2.10 Class-Only Protocols
281
4.2.11 Protocol Conformance
282
4.2.12 Optionale Eigenschaften
284
4.3 Generics
286
4.3.1 Generic Functions
287
4.3.2 Generic Types
289
4.3.3 Type Constraints
291
4.3.4 Associated Types
292
4.4 Access Control
296
4.4.1 Modules und Source Files
297
4.4.2 Access Levels
298
4.4.3 Syntax
298
4.4.4 Access Levels in Custom Types
299
4.4.5 Access Levels in Getter und Setter einer Property
302
5 Swift, Cocoa und Objective-C
304
5.1 Interoperability
305
5.1.1 Swift Type Compatibility
306
5.1.2 Selectors in Objective-C
308
5.1.3 Optionals in Swift und Objective-C
308
5.1.4 Arbeiten mit dem Interface Builder
309
5.1.5 Arbeiten mit Core Data Managed Object Subclasses
310
5.1.6 Automatic Bridging
311
5.1.7 Cocoa Design Patterns
313
5.2 Mix and Match
313
5.2.1 Mix and Match innerhalb eines App-Targets
314
5.2.2 Mix and Match innerhalb eines Framework-Targets
316
5.3 Migration
317
6 Swift und Xcode
320
6.1 Installation von Xcode
320
6.2 Erstellen eines neuen Swift-Projekts
322
6.3 Der Grundaufbau von Xcode
325
6.4 Neue Swift-Dateien erstellen
329
6.5 Refactoring – leider nein!
331
6.6 Playgrounds im Detail
331
7 Profi-Wissen und Tipps für die tägliche Arbeit
336
7.1 Zahlenwerte übersichtlicher gestalten
336
7.2 Benennung von Variablen und Konstanten mit Sonderzeichen und Emoticons
337
7.3 Switch für Fortgeschrittene
338
7.3.1 Tuples
338
7.3.2 Value Binding
339
7.3.3 Where
339
7.4 Kurzschreibweise für Abfragen bei return
340
7.5 Custom Operators
340
7.6 Swift-Beispielprojekte
342
Index
344
© 2009-2024 ciando GmbH