我需要创建一个这样的计时器:

timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(dismissNotification(completion:)), userInfo: nil, repeats: false)

func dismissNotification(completion: (() -> ())? = nil) { ... }

但它崩溃而没有显示任何原因。为什么会发生?以及如何解决这个问题?

最佳答案

(NS)Timer仅允许两种类型的操作:

没有参数

  • func timerFireMethod()

  • 通过单个参数传递受影响的(NS)Timer实例
  • func timerFireMethod(_ timer : Timer)

  • 但是在iOS 10 / macOS 10.12中,您可以使用带闭包的新API
    class func scheduledTimer(withTimeInterval interval: TimeInterval,
                                                repeats: Bool,
                                                  block: @escaping (Timer) -> Void) -> Timer
    

    关于ios - 如何在Swift 3中为带有可选参数的函数创建选择器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39998069/

    10-14 23:37