Cocoa (like everything) has some rough patches, but overall is clean, elegant, and has a pretty consistent feel and vision.
Proof is that ARC exists. This is the only reason compiler tools like ARC are possible. If Cocoa were too inconsistent, ARC could not be exist.
Given that Cocoa's origins are from the 80's (NeXT) and Foundation is still with us today on iOS (and UIKit is very similar/familiar to AppKit), this is an extraordinary accomplishment and it has succeeded better and longer than any of its contemporaries.
> Cocoa (like everything) has some rough patches, but overall is clean, elegant, and has a pretty consistent feel and vision.
Exactly. Also, Apple has the courage to regularly deprecate and subsequently remove things from Cocoa/Core/Darwin, keeping it clean, focused and elegant.
Which bring us to the GGP comment:
> But any other API that is capable of as much as Win32 is would end up looking almost as bad, minus a lot of the legacy cruft, except of course in the time it takes to develop such an all encompassing API, you'd end up with legacy cruft all of your own!*
To which I disagree wholeheartedly (not just because of Cocoa, but every single sane API out there regularly deprecates then drops stuff). Win32 accreted features around a core of cruft like a black hole. The only solution for Microsoft is to relegate the 8/16/32bit heritage lying at its core and drop it dead as it's collapsing under its own weight. Which is what they did with the Win8 internal design, where Win32 is relegated to a gangrenous limb awaiting to be severed.
Ah, but what is Cocoa? :) In practice, Cocoa has had at least two major refreshes; a major overhaul of AppKit in the NeXT->MacOS transition, and the replacement of AppKit with UIKit for iOS (and I'd be sort of surprised if AppKit isn't eventually deprecated and replaced with a UIKit derivative on the desktop; UIKit smooths a lot of the rough edges).
Bits get added to Win32, but it hasn't really had much substantive change to existing stuff in a very long time.