I've actually settled on an approach that feels just like writing Cocoa/AppKit/UIKit. It effectively exposes wrapper types that loop in delegates, so you wind up with a feeling like you're writing classes - you just can't subclass. I've tried to keep the conventions (entry points, lifecycles, method naming) very similar so knowledge transfer is there.
I have a repo for it but the example is pretty out of date. Can see about updating it when I've got the next push ready.
I have a repo for it but the example is pretty out of date. Can see about updating it when I've got the next push ready.