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 用来确定不同对象是否呈现相同的值
上一篇下一篇

猜你喜欢

热点阅读