美文网首页
从containsObject 到 hash值

从containsObject 到 hash值

作者: 克洛斯贝尔 | 来源:发表于2019-07-23 15:44 被阅读0次

    曾经一直以为containsObject是比较内存地址的,直到最近才发现只是一个误解。

        NSString *s = @"1";
        NSString *ss = [NSMutableString stringWithFormat:@"%@",@"1"];
        
        NSLog(@"hash %lu %p", (unsigned long)s.hash, s);
        //hash 918 0x101306d48
        NSLog(@"hash %lu %p", (unsigned long)s.hash, ss);
        //hash 918 0x101306d48
        
        NSLog(@"== %@", s == ss ? @"相等" : @"不等");
        //== 不等
        NSLog(@"isEqual %@", [s isEqual:ss] ? @"相等" : @"不等");
        //isEqual 相等
        
        NSArray *array = @[ss];
        NSLog(@"containsObject %@", [array containsObject:s] ? @"包含" : @"不包含");
        //containsObject 包含
    

    翻翻资料,写写代码得知
    == 比较的是内存地址是否相同
    isEqual 先比较hash值,然后比较数据类型,都相同就是相同
    containsObject 会调用isEqual

    相关文章

      网友评论

          本文标题:从containsObject 到 hash值

          本文链接:https://www.haomeiwen.com/subject/sstalctx.html