As someone who has done a
lot of Win32 programming in plain C, I can recognise some common patterns like an event loop and window creation, but it's quite amazing how much extra "cruft" there is just to deal with what appears to be the contortions of OOP'ing everything. All those string constants are rather surprising too. The interesting thing is, the few times I've had to use a Mac the GUI didn't feel quite as responsive as Windows on the same hardware --- it wasn't jerky/stuttering, just what I'd describe as "smooth but sluggish", and the binaries were noticeably larger, and I now wonder if this increased abstraction and complexity has anything to do with it.
For comparison, a similar Win32 app in plain C:
http://www.winprog.org/tutorial/simple_window.html
X Windows app in plain C:
http://www.paulgriffiths.net/program/c/srcs/helloxsrc.html
...and just for fun, the same simple Win32 app from above in Assembly language:
http://win32assembly.programminghorizon.com/tut3.html
Looking at the code again, if I were forced to write an OS X app in plain C, there would be plenty of macro usage around objc_msgSend.