• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Forwarding messages from an application delegate
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Forwarding messages from an application delegate


  • Subject: Re: Forwarding messages from an application delegate
  • From: "Matthew Gertner" <email@hidden>
  • Date: Fri, 2 May 2008 16:55:45 +0200

Thanks, Graham. It seems like the superclass deals with rejecting the
message, but I was missing respondsToSelector. Added that and now it
works perfectly!

Matt

On Fri, May 2, 2008 at 4:44 PM, Graham Cox <email@hidden> wrote:
> You also need to override -respondsToSelector: and return a logical OR of
> your delegate plus the old delegate's response, something like:
>
>  - (BOOL)        respondsToSelector:(SEL) aSelector
>  {
>         BOOL responds = [super respondsToSelector:aSelector];
>
>         if( !responds )
>                 responds = [[self oldDelegate]
> respondsToSelector:aSelector];
>
>         return responds;
>  }
>
>  Also, forwardInvocation isn't called unless your object has already
> rejected the message, so its implementation should look like:
>
>  - (void)        forwardInvocation:(NSInvocation*) invocation
>  {
>     SEL aSelector = [invocation selector];
>
>     if ([[self oldDelegate] respondsToSelector:aSelector])
>         [invocation invokeWithTarget:[self controller]];
>     else
>         [self doesNotRecognizeSelector:aSelector];
>  }
>
>
>  hth,
>
>
>  G.
>
>
>
>
>
>
>  On 3 May 2008, at 12:35 am, Matthew Gertner wrote:
>
>
> >
> >
> >
> > Hi,
> >
> > I am implementing an application delegate for a framework (Mozilla)
> > that already registers its own delegate internally. Ideally I would
> > like to be able to handle specific delegate messages in my class (in
> > this case adding items to the dock tile menu) and forward all other
> > invocations to the old delegate. So before I call [[NSApplication
> > sharedApplication] setDelegate] for my delegate, I retrieve the
> > existing delegate and save it in a member variable (mOldDelegate). I
> > thought that I could get invocations to forward automatically like
> > this:
> >
> > - (void)forwardInvocation:(NSInvocation *)anInvocation
> > {
> > if ([mOldDelegate respondsToSelector:[anInvocation selector]])
> >  [anInvocation invokeWithTarget:mOldDelegate];
> > else
> >  [super forwardInvocation:anInvocation];
> > }
> >
> > - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
> > {
> > if ([mOldDelegate respondsToSelector:aSelector])
> >  return [mOldDelegate methodSignatureForSelector:aSelector];
> > else
> >  return [super methodSignatureForSelector: aSelector];
> > }
> >
> > For some reason neither methodSignatureForSelector nor
> > forwardInvocation is ever called. Perhaps this has something to do
> > with the way messages are sent to the delegate by the application. As
> > a result, my delegate never forwards to the old delegate. Any guidance
> > would be appreciated.
> >
> > Matt
> > _______________________________________________
> >
> > Cocoa-dev mailing list (email@hidden)
> >
> > 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:
> >
> > This email sent to email@hidden
> >
>
>



--
*** Note that my email has changed to email@hidden.
Please update your address book accordingly. ***
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >Forwarding messages from an application delegate (From: "Matthew Gertner" <email@hidden>)
 >Re: Forwarding messages from an application delegate (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: Forwarding messages from an application delegate
  • Next by Date: Re: Forwarding messages from an application delegate
  • Previous by thread: Re: Forwarding messages from an application delegate
  • Next by thread: Re: Forwarding messages from an application delegate
  • Index(es):
    • Date
    • Thread