迅速将故障传递给变量的延迟函数4

时间:2018-10-18 21:22:44

标签: 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 :(得分:1)

问题在于attemptToIdentify(user)通话。这里不是打电话的地方。您需要一个选择器,即函数的名称。因此,只需输入attemptToIdentify。如果您需要传递某些内容,则可以在with参数中传递它。

更好的是,根本不使用perform:afterDelay:。如果您的想法是增加通话延迟,请使用asyncAfter(或我的delay封装)。