0
我最近發現NSMapTable
(doc,nshipster),我一直在想它是否可以用來代替關聯的對象。Objective-C相關對象vs NSMapTable
下面是一個例子使用標準相關聯的對象:使用NSMapTable
var fooKey = "foo"
extension UIView {
var foo: UIImage? {
set {
objc_setAssociatedObject(self, &fooKey, newValue, .OBJC_ASSOCIATION_RETAIN)
}
get {
return objc_getAssociatedObject(self, &fooKey) as? UIImage
}
}
}
與實現:
let barTable = NSMapTable<UIView, UIImage>(keyOptions: [.weakMemory], valueOptions: [.strongMemory])
extension UIView {
var bar: UIImage? {
get {
return barTable.object(forKey: self)
}
set {
barTable.setObject(newValue, forKey: self)
}
}
}
我想谷歌和理解,沒有運氣的差異,我甚至不知道我可以如何比較兩個實現。
我該如何比較它們?有什麼區別?
由於
bbum的答案給出了這兩者之間差異的一個例子,但要得到一個特定於您的需求的答案,您將不得不提供一些更具體的用例示例 - 爲什麼需要關聯的對象第一個地方? –
現在沒有具體的東西,我只是想了解技術差異以及如何比較這兩種方法。 –