2016-08-16 7 views

答えて

1

は同じように、以下の操作を行います。ここ

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 
     } 
    } 
} 
+1

同様のアプローチ:http://stackoverflow.com/a/29107498/1187415を。 –

関連する問題