
Automatic encoding and decoding 372...................................................
Encoding and decoding custom types 373..............................................
Renaming properties with CodingKeys 375.............................................
Manual encoding and decoding 376........................................................
Key points 377..........................................................................................
Where to go from here? 378....................................................................
Challenges 378.........................................................................................
Chapter 23: Asynchronous Closures and
Memory Management 379..........................................
Reference cycles for classes 379.............................................................
Reference cycles for closures 383...........................................................
Handling asynchronous closures 385......................................................
Key points 389..........................................................................................
Where to go from here? 389....................................................................
Challenges 390........................................................................................
Chapter 24: Value Types and Value Semantics 392..
Value types vs. reference types 393........................................................
Defining value semantics 396..................................................................
Implementing value semantics 397..........................................................
Recipes for value semantics 404.............................................................
Key Points 404.........................................................................................
Where to go from here? 405....................................................................
Challenges 406........................................................................................
Chapter 25: Protocol-Oriented Programming 409.....
Introducing protocol extensions 409.......................................................
Default implementations 411....................................................................
Understanding protocol extension dispatching 413.................................
Type constraints 414................................................................................
Protocol-oriented benefits 416................................................................
Why Swift is a protocol-oriented language 419.......................................
Key points 420..........................................................................................
Where to go from here? 421.....................................................................
Swift Apprentice
raywenderlich.com
16