我是新手,但是在延迟后的第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)
}
}
答案 0 :(得分:1)
问题在于attemptToIdentify(user)
是通话。这里不是打电话的地方。您需要一个选择器,即函数的名称。因此,只需输入attemptToIdentify
。如果您需要传递某些内容,则可以在with
参数中传递它。
更好的是,根本不使用perform:afterDelay:
。如果您的想法是增加通话延迟,请使用asyncAfter
(或我的delay
封装)。