<div dir="ltr">Hi all,<div><br></div><div>The following snippet summarises an issue I was investigating:</div><div><br></div><div><div>struct Observable&lt;T&gt; {</div><div>    var value: T {</div><div>        didSet {</div><div>            print(&quot;Observable.didSet&quot;)</div><div>            callback?()</div><div>        }</div><div>    }</div><div>    var callback: (() -&gt; Void)?</div><div>}</div><div><br></div><div>class MyClass {</div><div>    var myString: Observable&lt;String&gt; {</div><div>        get {</div><div>            return _myString</div><div>        }</div><div>        set {</div><div>            print(&quot;MyClass.Setter&quot;)</div><div>            self._myString = newValue</div><div>        }</div><div>    }</div><div><br></div><div>    private var _myString: Observable&lt;String&gt;</div><div>    init (string: Observable&lt;String&gt;) {</div><div>        self._myString = string</div><div>        print(&quot;MyClass.init.end&quot;)</div><div>    }</div><div>}</div><div><br></div><div>let myClass = MyClass(string: Observable&lt;String&gt;(value: &quot;1&quot;, callback: nil))</div><div>myClass.myString.callback = {</div><div>    print(myClass.myString.value)</div><div>}</div><div>myClass.myString.value = &quot;2&quot;</div></div><div><br></div><div><b>Output:</b></div><div><div>MyClass.init.end</div><div>MyClass.Setter</div><div>Observable.didSet</div><div><b>1</b></div><div>MyClass.Setter</div></div><div><br></div><div>Obviously I wasn&#39;t expecting to get &quot;1&quot;, but &quot;2&quot; in the callback&#39;s print, and this happens because MyClass.setter is called after Observable.didSet completes.</div><div><br></div><div>Is it feasible that all the <b>set</b>s are called first, and then all the <b>didSet</b>s?</div><div><br></div><div>Cheers,</div><div>Diego</div></div>