直接看代码,代码中有详细注释
extension UIButton {
// 定义关联的Key
private struct UIButtonKeys {
static var clickKey = "UIButton+Extension+ActionKey"
}
func addActionWithBlock(_ closure: @escaping (_ sender:UIButton)->()) {
//把闭包作为一个值 先保存起来
objc_setAssociatedObject(self, &UIButtonKeys.clickKey, closure, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY)
//给按钮添加传统的点击事件,调用写好的方法
self.addTarget(self, action: #selector(my_ActionForTapGesture), for: .touchUpInside)
}
@objc private func my_ActionForTapGesture() {
//获取闭包值
let obj