Property wrappers
In Swift, property wrappers are program entities with names starting with @.
Property wrappers are “logic” code fragments, which are executed whenever set or get is executed on that property. In our case, a property or an attribute is, to keep things simple, just a fancy name for a variable within our struct.
So, whenever you “do” something to that variable, the corresponding property wrapper will be invoked.
In the case of @State, which is a property wrapper defined by Apple, it tells the following SwiftUI a few things about the view struct:
- It tells SwiftUI that the value should be persisted and not reset to its initial value whenever the view gets redrawn
- It tells SwiftUI that a property’s value is allowed to change
- It tells SwiftUI to redraw that corresponding view whenever the @Stateproperty changes
The following figure shows you a conceptual flowchart on how SwiftUI uses the @State wrapper to...
 
                                             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
     
         
                 
                 
                 
                 
                 
                 
                 
                 
                