Функция задержки неисправностей с переменными, переданными ей в swift 4 - PullRequest
0 голосов
/ 19 октября 2018

Я очень новичок в swift и у меня возникают проблемы с повторным вызовом этой функции на 6-й строке после задержки, Xcode сообщает мне, что

Аргумент '#selector' не относитсяк методу, свойству или инициализатору @objc

Я знаю, в чем проблема, и пробовал искать, но не смог ничего сделать.

@objc func attemptToIdentify(_ user: String) {
    if manager.status == .connected {
        socket.emit("identify", user) //This functions correctly
    } else {
        print(manager.status, "... will attempt subscription in 1 second")
        self.perform(#selector(attemptToIdentify(user)), with: nil, afterDelay: 1)
    }
}

1 Ответ

0 голосов
/ 19 октября 2018

Проблема в том, что attemptToIdentify(user) - это вызов .Это не место для звонка;вам нужен селектор , то есть имя функции.Так что просто поставьте attemptToIdentify.Если вам нужно передать что-то, вы можете передать это в параметре with.

Еще лучше, не используйте perform:afterDelay: вообще.Если идея состоит в том, чтобы добавить задержку к вызову, просто используйте asyncAfter (или мою delay инкапсуляцию этого).

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