On Mar 26, 2013, at 10:30 , Chris Tracewell <ch...@thinkcl.com> wrote:

> How can I get [self delegate] to recognize my custom methods?

There are two ways, one simpleminded, the other a bit sophisticated:

1. Use a local variable:

        id<TKOutlineViewDelegate> delegate = [self delegate];
        …
        [delegate  outlineView:self enterKeyPressedForRow:[self selectedRow]];
        …

You'd need to introduce the local variable into each scope where you send the 
delegate one of your custom messages.

2. Redeclare the "delegate" property:

        @interface TKOutlineView : NSOutlineView {}
        @property (nonatomic,readonly) id<TKOutlineViewDelegate> delegate;
        @end

        @implementation TKOutlineView
        @dynamic delegate;
        …
        [[self delegate]  outlineView:self enterKeyPressedForRow:[self 
selectedRow]];
        …

The @dynamic statement says "I don't have an implementation of the 'delegate' 
property in this class, but that's just fine because it's already implemented 
(in my superclass)".

Alternatively, you can avoid @dynamic by supplying an overriding implementation:

        - (id<TKOutlineViewDelegate>) delegate {
                return [super delegate];
        }

but the @dynamic version is a bit more elegant.

With either alternative, this approach lets you avoid the clutter of the 
additional local variables.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to