I think your viewpoint is really wrong-headed. Since around 2001, Apple has given you pretty much a single way to write OS X apps: Objective-C and Cocoa. Yes, there was a brief flirtation with Java, but that lasted what? A year? And afterwards it was 100% clear that Objective-C was the way forward. Same thing with GC. They tried it, decided they didn't like it, and then got rid of it. No ambiguity. Furthermore, the basic structure of a desktop application has not changed much at all in the OS X era. In contrast, MS pushed C#+WinForms for a while, then moved on to C#+WPF (without really killing WinForms), then moved on to C++/WinRT (again without really killing C#+WPF). Also, none of these post-Win32 technologies seemed to get anything near universal buy-in from developers. Furthermore, the switch from C#+WPF to C++/WinRT was a profound change: If you had a WPF app, you pretty much had to redesign the whole UI when you switched to WinRT, because it's based on an entirely different way of organizing a UI.
And I say all this as someone who has mostly stuck with Windows since NT 4. Personally, I find it just sad the way they've mismanaged the developer story for the platform, starting, really, with the introduction of WPF.
On OS X, in contrast, the developer story has been pretty consistent since the introduction of OS X: Write your apps in Objective-C+Cocoa. Full stop.
Of course, now Apple has introduced Swift, and the coexistence of Obj-C and Swift does seem like it complicates the developer story. But not nearly to the extent the MS developer story has been, and continues to be, a mess.