1
タイトルと同様です。ついに私は共通の解決策を見つけて、みんなに見せてくれる。誰かがより良い解決策を持つことを願っています。Swiftの異なるブロックでobjc_setAssociatedObjectを実装する方法は?
タイトルと同様です。ついに私は共通の解決策を見つけて、みんなに見せてくれる。誰かがより良い解決策を持つことを願っています。Swiftの異なるブロックでobjc_setAssociatedObjectを実装する方法は?
は同じように、以下の操作を行います。ここ
class BlockWrapper<T> {
let block: T?
init (_ b: T?) { self.block = b }
}
public typealias YourBlock = (param: [String:String]) -> Bool
public typealias YourBlock2 =() -> Bool
extension UIButton {
@nonobjc static var iActionBlockKey = Int8(0);
public var actionBlock: YourBlock? {
set {
objc_setAssociatedObject(self, &UIButton.iActionBlockKey, BlockWrapper<YourBlock>(newValue), .OBJC_ASSOCIATION_RETAIN)
}
get {
let wrapper = objc_getAssociatedObject(self, &UIButton.iActionBlockKey) as? BlockWrapper<YourBlock>
return wrapper?.block
}
}
@nonobjc static var iActionBlockKey2 = Int8(0);
public var actionBlock2: YourBlock2? {
set {
objc_setAssociatedObject(self, &UIButton.iActionBlockKey2, BlockWrapper<YourBlock2>(newValue), .OBJC_ASSOCIATION_RETAIN)
}
get {
let wrapper = objc_getAssociatedObject(self, &UIButton.iActionBlockKey2) as? BlockWrapper<YourBlock2>
return wrapper?.block
}
}
}
同様のアプローチ:http://stackoverflow.com/a/29107498/1187415を。 –