Обычно при использовании objc_setAssociatedObject
рекомендуется создать переменную stati c, а затем использовать ее адрес (через префикс '&') в качестве ключа.
Однако у нас есть случай, когда нам нужно связать произвольное количество классов с одним классом «владельца», и, как таковой, каждому нужен свой уникальный ключ. Я думал использовать реальный адрес экземпляра класса для этой цели.
Проблема, с которой я сталкиваюсь, заключается в том, что я могу только получить адрес в виде Int, но функция ожидает UnsafeRawPointer
и я не нашел ни одного кода, который позволил бы мне инициализировать или преобразовать в один из целых чисел.
Итак, еще раз, пока я могу получить адрес как int с этим кодом ...
func addressOf<T: AnyObject>(_ object: T) -> Int {
return unsafeBitCast(object, to:Int.self)
}
let classA = MyClass()
let classB = classA
let a = addressOf(classA)
let b = addressOf(classB)
// Result: a == b
Я не могу получить а / б как UnsafeRawPointer
. Это вообще возможно?