Adding the @Observable macro
The primary goal of the Observation framework is to simplify our work as much as possible, and it does that with the heavy use of macros.
Let’s take a Book class, for example:
class Book: ObservableObject {
    @Published var title:String = ""
    @Published var author: String = ""
    @Published var publishedYear: Date = Date()
    @Published var numberOfPages: Int = 0
}			The Book class is a standard ObservableObject class that contains four properties with a @Published property wrapper.
Using the Observation framework, we can get rid of all the property wrappers and the ObservableObject protocol and just add a macro attached to the class declaration:
@Observable
class Book {
    var title:String = ""
    var author: String = ""
    var publishedYear: Date... 
                                             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
    