关联器
关联器 通过依赖管理器 CocoaPods 获取。
===================
关联器 是一个库,可以轻松地以 Swifty 的方式管理 Objc 关联对象。
安装
要通过 Cocoapods 安装 Warp iOS SDK,只需在 Podfile 中添加此行,然后运行 pod install
pod 'Associator'
如何使用
要使用 关联器,只需将想要添加任何关联对象的类扩展到 关联器
协议中,然后在 .oa
命名空间中使用获取器和设置器方法。
示例
import Associator
extension UIButton: Associator {
private struct AssociatedKeys {
static var value: Int = 0
}
var value: Int {
get { return self.oa.get(&AssociatedKeys.value, defaultValue: AssociatedKeys.value) }
set { self.oa.set(newValue, forKey: &AssociatedKeys.value) }
}
}
获取对象
您不必担心类型转换,因为 .get
方法会自动推断类型。
get 方法也可以返回可空值,您可以通过省略 defaultValue
参数来实现。
var string: String? {
get { return self.oa.get($someKeyHere) }
set { self.oa.set(newValue, forKey: $someKeyHere) }
}
设置对象
简单使用 set(_ value: Any, forKey key: UnsafeRawPointer)
方法。默认情况下,关联策略设置为使用 .retainNonAtomic
。如果你想使用不同的关联策略,请使用 func set(_ value: Any, forKey key: UnsafeRawPointer, usingPolicy policy: AssociationPolicy)
示例
self.oa.set(newValue, forKey: &AssociatedKeys.string)
self.oa.set(newValue, forKey: &AssociatedKeys.string, usingPolicy: .copyNonatomic)
self.oa.set(newValue, forKey: &AssociatedKeys.string, usingPolicy: .copy)