Я пытаюсь преобразовать исходный код проекта из Swift 3 в Swift 4. Одно предупреждение Xcode дает мне о моих селекторах.
Например, я добавляю цель к кнопке с помощью обычного селектора, например:
button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside)
Это предупреждение, которое он показывает:
Аргумент '#selector' относится к методу экземпляра 'myAction()' в 'ViewController', который зависит от вывода атрибута '@objc', устаревшего в Swift 4
Добавьте '@objc', чтобы открыть этот метод экземпляра Objective-C
Теперь, нажав Fix
на сообщение об ошибке, это применит к моей функции:
// before
func myAction() { /* ... */ }
// after
@objc func myAction() { /* ... */ }
Я действительно не хочу переименовывать все мои функции, чтобы включить знак @objc
и я предполагаю, что это не обязательно.
Как переписать селектор для устранения устаревания?
Связанный вопрос: