     
     public extension UIControl {
         
+        private struct AssociatedKeys {
+            static var targetClosure = "targetClosure"
+        }
+        
         public func setAction(controlEvents: UIControlEvents, action: ((_ sender: Any) -> Void)?) {
             if let action = action {
                 self.removeTarget(self, action: nil, for: controlEvents)
-                self.addTarget(self, action: #selector(UIControl.performAction), for: controlEvents)
+                self.addTarget(self, action: #selector(performAction), for: controlEvents)
                 self.closuresWrapper = ClosureWrapper(action: action)
             } else {
                 self.removeTarget(self, action: nil, for: controlEvents)

    private var _etak: UInt8 = 3
    private var _bcak: UInt8 = 4
    private var _tfak: UInt8 = 5
    
    extension UIButton {
        

        public func setAction(_ action: ((_ sender: Any) -> Void)?) {
            if let action = action {
                self.removeTarget(self, action: nil)
                self.addTarget(self, action: #selector(performAction))
                self.closuresWrapper = ClosureWrapper(action: action)
            } else {
                self.removeTarget(self, action: nil)
