I have added multiple target-action-forControlEvents: to a UIButton. I'd like to remove all of these in one go without deallocating anything. I will then set new targets.
Is this possible and how do I go about it?
Call removeTarget:action:forControlEvents:, pass nil for the target, NULL for action, and use a control mask that sets all bits (UIControlEventAllEvents).
Objective-C
[someControl removeTarget:nil 
                   action:NULL 
         forControlEvents:UIControlEventAllEvents];
Swift 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3 or higher
button.removeTarget(nil, action: nil, for: .allEvents)
- removeTarget:action:forControlEvents:
This method stops the delivery of events to the specified target object.
Specifying a valid object in the target parameter, this method stops the delivery of the specified events to all action methods associated with that object.
Specifying nil for the target parameter, this method prevents the delivery of those events to all action methods of all target objects
objective-c:
[_myButton removeTarget:  //any validObject (or) nil
              action:nil
    forControlEvents:UIControlEventAllEvents]; 
swift:
myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)