I'm also a Windows developer new to Cocoa and Objective-C. From what I understand there are typically two ways of handling events.
First of all, some classes (including classes that inherit NSApplication) use a delegate to handle events. You give it an instance of a delegate class, and it calls methods in the delegate class to handle the events. For example, if a key is pressed, NSApplication (or the inherited class) will call something like OnKeyPressed in the delegate instance, a method which contains your custom code. A delegate doesn't have to be a separate class either. In many Cocoa examples (which I strongly recommend you look at), the class makes itself the delegate, so its own methods are called when the delegate is called. I believe this method of event handling applies to classes like NSApplication, NSWindow, NSView. This delegate mechanism is somewhat similar to the C++ MFC framework for Windows applications, where the programmer overrides member functions to handle events.
The second way of event handling is a notification mechanism, which I'm less familiar with. A class provides some sort of notification object, and any other classes interested in notifications sign themselves up to receive notifications when a particular event occurs. This is more like the way a .NET programmer handles events.
I don't know yet which classes use which event handling method, but I understand that it can easily be found in the class documentation.
I strongly suggest reading Apple's great developer guides at developer.apple.com, which is where I've been learning all this stuff. In order to properly understand event handling, you should read the Introduction to Cocoa Fundamentals guide, which explains all this better than I can. That's where I learned what I know. There's a link at the upper-left to download a PDF, which is in my opinion easier to read and navigate than the web version.
http://developer.apple.com/document...mentals/Introduction/chapter_1_section_1.html