В настоящее время я изучаю Swift 5.2, и я обнаружил проблему, когда попытался использовать функцию #selector и @ obj c.
Я создал функцию @ obj c и вызываю ее в #selector, но функция имеет зачеркивание в автозаполнении. Как и некоторые другие устаревшие функции. На самом деле это ни на что не влияет, приложение работает нормально. Но я действительно хочу знать, почему появляется зачеркивание.
Кто-то говорит, что это потому, что функция рекомендует возвращаемое значение. И я попытался вернуть что-то вроде Bool в функции @ obj c. И зачеркивание исчезло, но оно по-прежнему ни на что не влияет, независимо от того, что возвращает функция.
Это меня действительно смутило. Кто-нибудь может сказать мне почему? Спасибо!
![enter image description here](https://i.stack.imgur.com/xGq9V.png)
Вот мой минимальный воспроизводимый пример:
let refreshControl_A = UIRefreshControl()
let refreshControl_B = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
refreshControl_A.addTarget(self, action: #selector(refresh_A(sender:)), for: .valueChanged)
refreshControl_B.addTarget(self, action: #selector(refresh_B(sender:)), for: .valueChanged)
}
@objc func refresh_A(sender: UIRefreshControl) {
print("Have strikethrough!")
}
@objc func refresh_B(sender: UIRefreshControl) -> Bool {
print("No strikethrough!")
return true
}
Функция refresh_A имеет зачеркивание в автозаполнении. Но у функции refresh_B нет зачеркивания в автозаполнении. Единственное различие между этими двумя функциями - это возвращаемый тип: одна - Viod, а другая - Bool. Обе функции работают нормально.