【发布时间】:2020-05-11 06:59:27
【问题描述】:
我运行的代码看起来像
final class Foo: Identifiable {}
let id1 = Foo().id
print("id1", id1.hashValue)
let id2 = Foo().id
print("id2", id2.hashValue)
print("id1 == id2", id1 == id2)
let foo1 = Foo()
let foo2 = Foo()
print("id3", foo1.id.hashValue)
print("id4", foo2.id.hashValue)
我意识到通常——并非总是——前两个 id 相同(相同的散列,相同的指针),后两个总是不同的,第二个和第三个散列值也经常——并不总是 - 保持不变。
例如,这很可能会打印出来
// id1, id2 and id3 are the same
id1 372028973742592862
id2 372028973742592862
id1 == id2 true
id3 372028973742592862
id4 -6512610764240591489
有时
// id1 and id2 are the same
id1 682965245911293614
id2 682965245911293614
id1 == id2 true
id3 -1068884789025324935
id4 6999154593386001644
而且很少
// all ids are different
id1 9219089083903263322
id2 6156776739104921767
id1 == id2 false
id3 -8383648492598359180
id4 483187449076408614
发生了什么?
【问题讨论】:
标签: ios swift memory-management