We saw back in Chapter 1, Swift Building Blocks, that certain Swift types behave differently from others, specifically regarding ownership and the mutation of properties. We even defined this difference, saying that classes are reference types, while structs and enums are value types. In this recipe, we will examine why these types behave differently and the performance implications this entails.
Let's create the model for an app that allows a user to schedule events that they do every day and reminds them when these events should occur.
Getting ready
We need to decide how we will model our daily event. The key to this decision is whether we want our event to have reference semantics or value semantics. We discussed the differences between the two in Chapter 1, Swift Building Blocks, but let's re-examine the differences.
Value types are simple data structures that you can think of as just bundles of data. Swift makes these types more useful by allowing...