On 17/02/2011, at 4:36 AM, Howard Moon wrote:

>       I'm teaching myself Objective-C and Cocoa, by working on a simple (so I 
> thought) modification to the default AudioUnit effect project.  But in this 
> project, I create my own views programmatically instead of using the NIB.  (I 
> know - why??? Just go with me, ok? :-))
> 
>       I have a hierarchy of NSView descendants, and ones below a certain 
> "base" class in the hierarchy need to respond to mouse clicks.  (Other 
> branches do not.)
> 
>       My first attempt was to add -mouseUp: and -mouseDown: to the "base" 
> class that directly inherits from NSView, and then only override those in 
> subclasses that need changes to the default behavior.  However, none of my 
> subclasses of that "base" class respond to mouse clicks when I do it that way.


If I've understood this correctly, what you suppose should happen, should 
happen.

If you have NSView -> Subclass A -> Subclass B and subclass A overrides 
mouseDown: and mouseUp:, then subclass B should get that implementation.

>       Shouldn't all derived classes inherit the behavior of their ancestors, 
> including those functions?

Yep, they should.

>       I'm *guessing* that is has something to do with the way events are 
> handled, and that some kind of check is done to make sure the class 
> implementing those functions is in fact the same class as the target of the 
> event, but that's just a guess. My alternate guess is that's the way 
> Objective-C works.

No. You must have made a mistake.

Are you sure you're overriding the right method? it must match the original 
method's signature exactly. Are you sure you are inheriting the right class, 
i.e. subclass B inherits subclass A, not NSView?

Show your actual code.

--Graham


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to