【发布时间】:2013-07-19 23:45:50
【问题描述】:
我有两个包含NSStrings 的NSDictionaries。为了比较这两个字典,我使用isEqualToDictionary: 方法。 isEqualToDictionary:says 上的文档
“如果两个字典都包含相同数量的条目,则两个字典具有相同的内容,并且对于给定的键,每个字典中的相应值对象满足 isEqual: 测试。”
所以,我的字符串是通过isEqual: 方法比较的。
问题是:isEqual: 如何为 NSString 工作?
它是否使用来自NSObject 的isEqual:?
我读过isEqual 来自NSObject 只是比较地址,使用==。
为了证明或反驳这个想法,我写了一个示例:
NSString *str1 = @"sampleString";
NSString *str2 = [NSString stringWithFormat:@"%@", @"sampleString"];
BOOL result = [str1 isEqual:str2];
result 是YES,但str1 和str2 的地址不同。
因此,要么它不使用来自NSObject 的isEqual:(比什么?),要么NSObject 的isEqual: 做了一些比只检查地址相等性更复杂的事情。
有人知道它是如何工作的吗?
【问题讨论】:
-
为什么不能使用 isEqualToString 方法?太容易了?
-
@SamBudda 不是我,是 NSDictionary 使用 isEqual:比较它的元素。
标签: ios objective-c macos cocoa foundation