I am not sure what you are really looking for, but if I understand what you are asking here:
I have a window object, with a view object, which has a subclass of a NSButtonCell object (IBOutlet). In the subclass of the NSButtonCell (lets call it MyButtonCell) I have a method that when call needs to inform the view, or the window, that the method has been called.
correctly, one possibility is for your NSButtonCell to post a NSNotification to the default notification center and have your view or window or whoever needs to know be an observer for that notification. You are free to define your own custom notifications.
Another possibility would be for your subclass of NSButtonCell to use:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
and from your NSCell method that, when invoked, needs to inform it's view or window, can do:
[[self controlView] performSelectorOnMainThread:@selector( viewMethodToInvoke: ) withObject:anObject waitUntilDone:YES]
or
[[[self controlView] window] performSelectorOnMainThread:@selector( windowMethodToInvoke: ) withObject:anObject waitUntilDone:YES]
A third possibility is to do as you suggest and provide your NSButtonCell with an object that it can send a message to directly, but this is just the same thing as using performSelectorOnMainThread on the controlView or the controlView's window, but more work.
As for your mouse tracking code, I assume that you are using a NSTrackingArea. You can find documentation on them here: Using Tracking-Area Objects