     public extension UIBarButtonItem {
         
         public convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, action: ((_ sender: Any) -> Void)?) {
-            self.init(barButtonSystemItem: systemItem, target: nil, action: #selector(UIBarButtonItem.performAction))
+            self.init(barButtonSystemItem: systemItem, target: nil, action: #selector(performAction))
             if let action = action {
                 self.closuresWrapper = ClosureWrapper(action: action)
                 self.target = self

        
    }
    
    
    public extension UIButton {
        
        public func setAction(_ action: @escaping ((_ sender: Any) -> Void)) {

    
    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(performAction), for: controlEvents)
                self.closuresWrapper = ClosureWrapper(action: action)
            } else {
                self.removeTarget(self, action: nil, for: controlEvents)
