Ios 在计时器选择器中完成的函数
我声明的函数如下:Ios 在计时器选择器中完成的函数,ios,swift,cocoa-touch,Ios,Swift,Cocoa Touch,我声明的函数如下: @objc func fetchDatabase(completion: ((Bool) -> Void)? = nil) 我允许完成为nil,因此可以将其称为fetchDatabase()或as fetchDatabase(completion: { (result) in // Stuff in here }) 但是,我也尝试在选择器中为计时器使用此函数。我使用以下行创建此计时器: Timer.scheduledTimer(timeInterval:
@objc func fetchDatabase(completion: ((Bool) -> Void)? = nil)
我允许完成为nil
,因此可以将其称为fetchDatabase()
或as
fetchDatabase(completion: { (result) in
// Stuff in here
})
但是,我也尝试在选择器
中为计时器
使用此函数。我使用以下行创建此计时器:
Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(fetchDatabase), userInfo: nil, repeats: true)
如果没有完成,则运行良好。然而,随着完成的增加,每当计时器运行时,我都会得到一个
EXC\u BAD\u ACCESS
错误。如果这确实是一个错误,请提供一些正确构造此选择器的帮助。默认参数将应用于调用站点,因此您需要生成两个单独的方法(其中一个调用另一个):
现在您的
scheduledTimer
调用应该可以正常工作。传递给计时器的选择器只允许两个可能的签名中的一个
someFunction()
someFunction(someLabel-someParameter:Timer)
fetchDatabase(completion:)
函数,因为它与两个合法选择器签名都不匹配
您需要传递一个有效的选择器,该选择器依次调用fetchDatabase(completion:)
函数。例如:
@objc timerHandler() {
fetchDatabase(completion: { (result) in
// Stuff in here
})
}
在定时器中使用选择器(timerHandler)
@objc timerHandler() {
fetchDatabase(completion: { (result) in
// Stuff in here
})
}