Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在计时器选择器中完成的函数_Ios_Swift_Cocoa Touch - Fatal编程技术网

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
        })
    }