Good news, after dropping SOMobjects, Apple have decided to adopt a language independent object model, ie COM and is even available on the iPhone.
Bad news, how did they manage to screw up IUnknown::QueryInterface so badly? The normal COM passes the IID as a pointer, what did Apple do? Some...