ios - 定时器选择器中具有完成功能的函数

标签 ios swift cocoa-touch

我声明一个函数:

@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 错误。如果这确实是错误,那么我们将非常感谢有关正确构建此选择器的一些帮助。

最佳答案

传递给计时器的选择器仅允许两种可能的签名之一

  1. someFunction()
  2. 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/

相关文章:

ios - 如何使用 UITableViewCell 的委托(delegate)方法设置 UISlider

ios - fetchBatchSize 和 NSFetchedResultsController 中的缓存被忽略

swift - 手动添加框架后缺少所需模块

iphone - 向 Objective C 类接口(interface)添加方法是可选的吗?

ios - 从FlashDevelop发布到iOS的问题:compile-abc不兼容

ios - 如何在 iOS 6 中向分组样式的 UITableViewController 添加背景图像?

ios - iPhone 上的 SQLite 数据库

ios - 泄漏工具未发现泄漏,但未释放内存

objective-c - 难以访问 XML 文件中的 URL 列表

cocoa :框架和边界有什么区别?