To me the Qt and Cocoa approaches look the same. Qt is built on top of C++ pretty much the same way Objective-C is built on top of C: there is some syntactic sugar to allow dynamic binding and you do not ever have to look at the intermediate results if you do not want to. You can hack into the details of the implementation if you prefer, and you can do it in both frameworks.