Я хочу глобально запретить пользователю двойное нажатие кнопки. В качестве подтверждения концепции я начал переопределять метод addTarget кнопки пользовательского интерфейса и заменил исходный вызов дросселированным вызовом, используя RxSwift:
import Foundation
import RxSwift
import RxCocoa
public extension UIButton {
override open func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControlEvents) {
guard controlEvents == UIControlEvents.touchUpInside,
let viewController = target as? UIViewController
else
{
super.addTarget(target, action: action, for: controlEvents)
return
}
self.rx
.tap
.throttle(3,
latest: false,
scheduler: MainScheduler.instance)
.subscribe({ _ in
viewController.perform(action)
})
}
}
При вызове этого кода я получаю ошибку плохого доступа:
Тема 1: EXC_BAD_ACCESS (код = EXC_I386_GPFLT)
Я довольно новичок в Swift, поэтому любые рекомендации о том, с чего начать устранение неполадок или альтернативные предложения, будут оценены.