On Jul 25, 2009, at 5:32 PM, Adam R. Maxwell wrote:


On Jul 25, 2009, at 5:02 PM, Luke the Hiesterman wrote:


On Jul 25, 2009, at 3:41 PM, Adam R. Maxwell wrote:

On Jul 25, 2009, at 3:23 PM, Kyle Sluder wrote:

Internally, UITextField is going to use self.delegate to get its
delegate, following the correct accessor behavior.  You've gone and
replaced -delegate to return self. But the delegate pattern says that messages which this object does not understand should be forwarded to
the delegate.  This means that a class with a delegate needs to
implement -respondsToSelector: this way:

- (BOOL)respondsToSelector:(SEL)aSelector {
return [super respondsToSelector:aSelector]
|| [self.delegate respondsToSelector:aSelector];
}

Where is this guaranteed by the delegate pattern? I've created a fair number of classes with delegates and never done this; it would be interesting to know that I've been doing it wrong for years ;).

It's not guaranteed - it's just the right way to implement an optional delegate method.

Who says it's the right way, though? I've never seen a delegate implemented that way, in documentation or sample code, and wouldn't you also have to implement forwarding code to keep this from breaking? Maybe I'm dense, but I don't see the point of doing this.


I read the code too quickly. I just thought it was the standard if ([delegate respondsToSelector:....]) [delegate doSomething]; paradigm. I retract my statement. That is definitely not a standard of the delegation pattern.

Luke
_______________________________________________

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