Согласно документам ObjectIdentifier
- это:
Уникальный идентификатор экземпляра класса или метатипа.
Гарантируется ли эта уникальность только для существующие (т.е. не утилизированные) объекты? Или распространяется на весь срок службы приложения (т. Е. Независимо от того, как долго приложение работает и сколько объектов оно создает / уничтожает, никогда не будет столкновений)? Очевидно, я подозреваю, что первое, но хотел бы получить некоторое подтверждение. (Например, кажется, что реализация состоит в том, что ObjectIdentifier
каким-то образом получен из адреса объекта в памяти.)
Вариант использования заключается в том, что я рассматриваю использование ObjectIdentifier
для hashValue
для Set
слабых объектов, но если возможна коллизия идентификаторов для существующих и уже уничтоженных объектов, это не сработает.