美文网首页
OC和Swift中的hash的小不同

OC和Swift中的hash的小不同

作者: 万物皆有破绽 | 来源:发表于2017-04-12 10:08 被阅读0次

以前测试过OC的NSSet(字典也一样),发现和java中的HashMap规律一致。直接先上结果

java中的

我的测试基本步骤是,自定义对象作为 字典的key,hash返回相同, == 或者 isEqual 返回true,就判定为同一个对象,为了保证在容器对象中的正确,一般要求重写equals是要重写hashCode。比如一个人类对象,判断是否同一个人,就根据DNA属性重写isEqual)和 hash

- (BOOL)isEqual:(id)other
{
    //修改 返回值 看不同结果
    return false;
}

- (NSUInteger)hash
{
    //修改 返回值 看不同结果
    return 1;
}

    Test *t1 = [Test new];
    Test *t2 = [Test new];
    NSMutableSet *set = [[NSMutableSet alloc] initWithObjects:t1, t2, nil];

在Swift中,测试时用的swift3.1 不管是在swift中调用 OC的类还是swift的类。swift中 == 都和 isEqual 中的返回值一致(可能还有其他的影响因素我没测到吧, 同样也是看不到源代码的具体细节,,,估计是重写了 == 函数,默认调用的就是 isEqual),上面set,字典中判断是否相等 应该就是这样了吧,

/// == 反正和isEqal 相同,没必要再判断
e.hash == hash && e.key == key
swift测试

相关文章

网友评论

      本文标题:OC和Swift中的hash的小不同

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