In this chapter, we will cover the following topics:
- Using closures to create self-contained code
- Creating enumerations to write readable code
- Working with protocols and delegates
- Using extensions to extend classes functionality
- Working with memory management and ARC
- Using error handling
- Using generics to write generic and reusable code