将 target 和 action 改为 blocks
如果您觉得 - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
代码太复杂,可以尝试 ELAutoSelector。
pod 'ELAutoSelector', '~> 1.0'
pod install
#import "ELAutoSelectorHelper.h"
// In implementation
[myButton addTarget:ELTarget action:ELAction(^(id _Nonnull _self, id _Nonnull sender) {
...
// What you want to do
}, self) forControlEvents:UIControlEventTouchUpInside];
ELAction(action, dependency)
Action 是事件发生时执行的代码块。
Dependency 是确定 action生命的对象。
如果 dependency 为 nil,则 action 不会被释放,也不会被 action 强引用捕获的对象。
如果 dependency 被动作强引用捕获,这将导致内存泄漏,结果就是 action 和 dependency 都不会被释放。
英文:ELAutoSelector 在 Apache 2.0 许可下可用,有关更多信息请参阅 LICENSE 文件。