A couple of corrections:<p>1)
Mac OS X does not store a bitmap for every widget, that&#x27;s iOS&#x27;s architecture.  It stores a bitmap for every window.  Having a layer (GPU-stored bitmap) was only introduced once CoreAnimation was ported to OS X.  It was and is optional.<p>2)
OS X Views also have a -drawRect: method that works the same way.<p>3) 
In fact that&#x27;s how MVC works.  See <a href="http:&#x2F;&#x2F;blog.metaobject.com&#x2F;2015&#x2F;04&#x2F;model-widget-controller-mwc-aka-apple.html" rel="nofollow">http:&#x2F;&#x2F;blog.metaobject.com&#x2F;2015&#x2F;04&#x2F;model-widget-controller-m...</a><p>And react and frameworks like it just duplicated this, see <a href="http:&#x2F;&#x2F;blog.metaobject.com&#x2F;2015&#x2F;04&#x2F;reactnative-isn.html" rel="nofollow">http:&#x2F;&#x2F;blog.metaobject.com&#x2F;2015&#x2F;04&#x2F;reactnative-isn.html</a> In fact, when I first read about react (non-native), my first thought was &quot;hey, finally they came up with a good equivalent of NSView + drawRect: