On Feb 17, 2012, at 8:51 PM, Ken Thomases wrote:

> On Feb 17, 2012, at 2:33 PM, Ben Kennedy wrote:
> 
>> On 16 Feb 2012, at 3:54 pm, Ken Thomases wrote:
>> 
>>> In other words, you're being silly.  It's clear to everyone that -[NSString 
>>> isEqual:] must have semantics built on -[NSString isEqualToString:], which 
>>> is clearly documented.
>> 
>> What value does NSString's isEqualToString: bring to the table over its 
>> implementation of isEqual?  Is it just a matter of foregoing an 'if ([obj 
>> isKindOfClass:[NSString class])' construct at the front end?  Put another 
>> way, why does NSString provide isEqualToString: as a distinct method?
> 
> The -[NSString isEqualToString:] docs say, "When you know both objects are 
> strings, this method is a faster way to check equality than isEqual:."
> 
> In truth, though, the difference is probably slight.  -isEqual: checks if the 
> other object pointer is nil, checks the class, and invokes -isEqualToString:. 
>  So, there's a savings, but it's pretty trivial.  Back in the day, though, 
> when CPUs were slower and the Objective-C runtime was less well optimized, it 
> might have been significant.  At this point, of course, it has to be 
> maintained for backward compatibility.
> 
> There's a minor type-safety advantage, too, I suppose.  If you pass a pointer 
> whose static type is not NSString* or a subclass to -isEqualToString:, the 
> compiler will complain, possibly alerting you to a mistake.  Similarly, when 
> implementing a -isEqualTo<Type>: method in one of your own classes, the type 
> of the argument will be the specific type instead of "id", so you can get 
> better checking of your implementation.
> 
> Regards,
> Ken

There is also arguably some value in the explicit declaration of intent when 
using the class-specific equality methods; e.g., that a given bit of code 
expects something to be a string.

Preston
_______________________________________________

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