在我的 Swift 应用中调用 NSTimer 函数的选择器无法识别
unrecognized selector for calling a function from NSTimer in my Swift app
我应该如何在 swift 中声明一个函数以便我可以使用 NSTimer。我目前收到错误:
'-[MyClass.MyViewController displayOfflineTimerMessage]: unrecognized selector
我尝试在我的函数前面添加 @objc 和 dynamic 但都没有用。
func sendOfflineSystemMessageIfNeccesary(username:String) {
var debounceTimer = offlineNotificationDebounceList["username"];
if let timer = debounceTimer {
//todo: log warning message since we should never get here
timer.invalidate()
}
debounceTimer = NSTimer(timeInterval: debounceTimeInSeconds, target: self, selector: Selector("displayOfflineTimerMessage"), userInfo: username, repeats: false)
NSRunLoop.currentRunLoop().addTimer(debounceTimer!, forMode: "NSDefaultRunLoopMode")
}
@objc func displayOfflineTimerMessage(timer:NSTimer)
{
if let username:String = timer.userInfo as? String {
offlineNotificationDebounceList.removeValueForKey(username)
sendConnectionMessage(username, msg: username + " has left")
}
}
您可以只使用该行
debounceTimer = NSTimer(timeInterval: debounceTimeInSeconds, target: self, selector: "displayOfflineTimerMessage:", userInfo: username, repeats: false)
我应该如何在 swift 中声明一个函数以便我可以使用 NSTimer。我目前收到错误:
'-[MyClass.MyViewController displayOfflineTimerMessage]: unrecognized selector
我尝试在我的函数前面添加 @objc 和 dynamic 但都没有用。
func sendOfflineSystemMessageIfNeccesary(username:String) {
var debounceTimer = offlineNotificationDebounceList["username"];
if let timer = debounceTimer {
//todo: log warning message since we should never get here
timer.invalidate()
}
debounceTimer = NSTimer(timeInterval: debounceTimeInSeconds, target: self, selector: Selector("displayOfflineTimerMessage"), userInfo: username, repeats: false)
NSRunLoop.currentRunLoop().addTimer(debounceTimer!, forMode: "NSDefaultRunLoopMode")
}
@objc func displayOfflineTimerMessage(timer:NSTimer)
{
if let username:String = timer.userInfo as? String {
offlineNotificationDebounceList.removeValueForKey(username)
sendConnectionMessage(username, msg: username + " has left")
}
}
您可以只使用该行
debounceTimer = NSTimer(timeInterval: debounceTimeInSeconds, target: self, selector: "displayOfflineTimerMessage:", userInfo: username, repeats: false)