了解objc_setAssociatedObject中的UnsafeRawPointer

问题描述 投票:1回答:1

我想将n关联对象的数量设置为Swift中的对象

我的理解是UnsafeRawPointer参考的通常模式如下:

static var reference = "someRef"

public func add(to myObject: AnyObject) {
    let adding = ThingToAdd()        
    objc_setAssociatedObject(myObject, &reference, adding, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}

但是对于nadd(to:)的呼叫数量,这将不起作用>

类似地,如果我每个myObject只调用一次,则下面的代码可以正常工作。但是,如果我以相同的方式添加另一个关联对象...它将用第二个替换第一个ThingToAdd。内联构建唯一的字符串不起作用。在模拟器上可以,但在设备上则不能。

public func add(to myObject: AnyObject) {

    let adding = ThingToAdd()
    var reference = "objectref\(UUID().uuidString)".replacingOccurrences(of: "-", with: "")

    objc_setAssociatedObject(myObject, reference, adding, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)

}

我知道这是不正确的,但是我不知道如何创建nUnsafeRawPointers来存储具有唯一引用的关联对象。

任何帮助/解释将不胜感激。

我想在Swift中为一个对象设置n个关联对象我的理解是UnsafeRawPointer引用的通常模式如下:static var reference =“ someRef” public ...

objective-c swift unsafe unsafe-pointers associated-object
1个回答
0
投票
保证全局变量和静态成员变量(并且只有那些)具有固定地址。
© www.soinside.com 2019 - 2024. All rights reserved.