Почему моя пользовательская функция @ obj c в Swift имеет зачеркивание при автозаполнении? - PullRequest
1 голос
/ 30 мая 2020

В настоящее время я изучаю Swift 5.2, и я обнаружил проблему, когда попытался использовать функцию #selector и @ obj c.

Я создал функцию @ obj c и вызываю ее в #selector, но функция имеет зачеркивание в автозаполнении. Как и некоторые другие устаревшие функции. На самом деле это ни на что не влияет, приложение работает нормально. Но я действительно хочу знать, почему появляется зачеркивание.

Кто-то говорит, что это потому, что функция рекомендует возвращаемое значение. И я попытался вернуть что-то вроде Bool в функции @ obj c. И зачеркивание исчезло, но оно по-прежнему ни на что не влияет, независимо от того, что возвращает функция.

Это меня действительно смутило. Кто-нибудь может сказать мне почему? Спасибо!

enter image description here

Вот мой минимальный воспроизводимый пример:

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. Обе функции работают нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...