Skip navigation.
 
mlRe: Forwarding messages from an application delegate
FROM : Matthew Gertner
DATE : Fri May 02 16:56:19 2008

Seems like you can "pretend" you implement them using
respondsToSelector (see Graham's reply).

On Fri, May 2, 2008 at 4:53 PM, Andy Lee <<email_removed>> wrote:
> Delegate methods aren't sent at all unless the delegate implements them.  I
> think your delegate is going to have to implement all possible delegate
> methods and then forward them *if* the old delegate implements them, and
> otherwise return an appropriate default value if there is a return value.
>
>  This means the application will send all possible delegate methods to you,
> as opposed to just the ones the old delegate implements, but hopefully that
> won't cause any problems.  I suppose you could do some low-level hacking
> where you detect which methods the old delegate implements and then remove
> unneeded methods from your delegate class.
>
>  --Andy
>
>
>
>  On May 2, 2008, at 10: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_removed>)
> >
> > 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/<email_removed>
> >
> > This email sent to <email_removed>
> >
>
>  _______________________________________________
>
>  Cocoa-dev mailing list (<email_removed>)
>
>  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/<email_removed>
>
>  This email sent to <email_removed>
>




--
*** Note that my email has changed to matthew.<email_removed>.
Please update your address book accordingly. ***

Related mailsAuthorDate
mlForwarding messages from an application delegate Matthew Gertner May 2, 16:35
mlRe: Forwarding messages from an application delegate Graham Cox May 2, 16:44
mlRe: Forwarding messages from an application delegate Andy Lee May 2, 16:53
mlRe: Forwarding messages from an application delegate Andy Lee May 2, 16:55
mlRe: Forwarding messages from an application delegate Matthew Gertner May 2, 16:55
mlRe: Forwarding messages from an application delegate Matthew Gertner May 2, 16:56
mlRe: Forwarding messages from an application delegate Bill Cheeseman May 2, 17:04
mlRe: Forwarding messages from an application delegate Graham Cox May 2, 17:18