title: Why property observer doesn't work with classes?
body: <p><em>Using Playground.</em></p>
  <p>I have the following structure:</p>
  <pre><code>struct Foo {
      var name: String
      var age: Int
      
      init(name: String, age: Int) {
          self.name = name
          self.age = age
      }
  }
  </code></pre>
  <p>I declared an instance from it as property observer with default values as &quot;James&quot; for the <code>name</code> and 33 for the <code>age</code>:</p>
  <pre><code>var myFoo = Foo(name: &quot;James&quot;, age: 33) {
      willSet {
          print(&quot;my foo will be: \(newValue)&quot;)
      }
      didSet {
          print(&quot;my foo was: \(oldValue)&quot;)
      }
  }
  </code></pre>
  <p>When trying to edit the <code>name</code> of the instance:</p>
  <pre><code>myFoo.name = &quot;John&quot;
  </code></pre>
  <p>I could see on the log:</p>
  <blockquote>
  <p>my foo will be: Foo(name: &quot;John&quot;, age: 33)</p>
  <p>my foo was: Foo(name: &quot;James&quot;, age: 33)</p>
  </blockquote>
  <p>which is my expectation. However, when declaring <code>Foo</code> as a class instead of structure: <code>class Foo</code> and running the exact same code, nothing will appear on the log.</p>
  <p>What is the reason behind it?</p>