I have two NSDictionaries
containing NSStrings
. To compare this two dictionaries I use isEqualToDictionary:
method. The documentation on isEqualToDictionary:
says
"Two dictionaries have equal contents if they each hold the same number of entries and, for a given key, the corresponding value objects in each dictionary satisfy the isEqual: test."
So, my strings are compared by isEqual:
method.
The question is:
How does isEqual:
work for the NSString
?
Does it use isEqual:
from NSObject
?
I've read that isEqual
from NSObject
just compares addresses, using ==
.
To prove or disprove this idea I wrote a sample:
NSString *str1 = @"sampleString";
NSString *str2 = [NSString stringWithFormat:@"%@", @"sampleString"];
BOOL result = [str1 isEqual:str2];
The result
is YES
, the addresses of str1
and str2
are different though.
So, either it does not use isEqual:
from NSObject
(what than?), or NSObject
's isEqual:
does something more complicated then just checking equality of addresses.
Does anybody know how does it really work?