我声明一个函数:
@objc func fetchDatabase(completion: ((Bool) -> Void)? = nil)
我允许完成为nil
,因此我可以将其称为fetchDatabase()
或
fetchDatabase(completion: { (result) in
// Stuff in here
})
但是,我也尝试在 #selector
中使用此函数作为 Timer
。我使用以下行创建此计时器:
Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(fetchDatabase), userInfo: nil, repeats: true)
如果没有完成,则运行正常。但是,添加完成后,每当计时器运行时,我都会收到 EXC_BAD_ACCESS
错误。如果这确实是错误,那么我们将非常感谢有关正确构建此选择器的一些帮助。
最佳答案
传递给计时器的选择器仅允许两种可能的签名之一
someFunction()
someFunction(someLabel someParameter: Timer)
您无法传递 fetchDatabase(completion:)
函数,因为它与两个合法选择器签名中的任何一个都不匹配。
您需要传递一个有效的选择器,该选择器依次调用您的 fetchDatabase(completion:)
函数。例如:
@objc timerHandler() {
fetchDatabase(completion: { (result) in
// Stuff in here
})
}
将 #selector(timerHandler)
与计时器一起使用。
关于ios - 定时器选择器中具有完成功能的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50647346/