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 ;).
Since -delegate is going to return self, -respondsToSelector: is going to result in infinite recursion. So It's Never Safe To Make An Object Its Own Delegate.
Even if it's safe, it's a bizarre way to do something, especially if you're already subclassing it...especially since delegates are mainly used to avoid subclassing. For the specific case of limiting text field input, why not just use an NSFormatter subclass, though? That's what I'd do in Cocoa (and this is the cocoa-dev list, after all).
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com