Objective-C 中比较相等的操作
2021-08-16 本文已影响0人
张科_Zack
用标准 C 库中的 ==
运算符来比较是否两个指针指向内存中的同一个对象。
请参考以下例子:
NSString *string1 = @"123";
NSString *string2 = @"123";
NSMutableString *string3 = [NSMutableString stringWithString:@"123"];
if (string1 == string2) {
NSLog(@"NSString 相同字符串指向同一块内存区域");
}
if (string1 == string3 ) {
} else {
NSLog(@"NSString, NSMutableString 相同字符串指向不同的内存区域");
}
输出
2021-08-16 14:53:46.525469+0800 Component[44899:2012399] NSString 相同字符串指向同一块内存区域
2021-08-16 14:53:46.525638+0800 Component[44899:2012399] NSString, NSMutableString 相同字符串指向不同的内存区域
使用 NSObject
中的 - (BOOL)isEqual:(id)object;
方法来确定不同对象是否呈现相同的值。
例如
NSString *string1 = @"123";
NSString *string2 = @"123";
NSMutableString *string3 = [NSMutableString stringWithString:@"123"];
if ([string1 isEqual:string2] && [string1 isEqual:string3]) {
NSLog(@"isEqual 用来确定不同对象是否呈现相同的值");
}
输出
2021-08-16 14:57:34.613874+0800 Component[44981:2016568] isEqual 用来确定不同对象是否呈现相同的值