Ios Swift-将inout参数传递给scheduledTimer

Ios Swift-将inout参数传递给scheduledTimer,ios,swift,parameters,timer,inout,Ios,Swift,Parameters,Timer,Inout,有没有办法通过scheduledTimer方法传递inout参数?我想要一个特定的值(禁用按钮,直到计时器用完) Var A只是为了表明我也尝试了一种不同的方法,但如果按钮是引用类型(即类),它就不起作用了,如果它是UIKit或AppKit类型,你可以直接将它传入,但有一种更通用的方法可能更好。传入闭包以充当完成处理程序: func计时器(Hz:TimeInterval,time:Double=10,onCompletion处理程序:@escaping()->Void){ 让info=Proce

有没有办法通过scheduledTimer方法传递inout参数?我想要一个特定的值(禁用按钮,直到计时器用完)


Var A只是为了表明我也尝试了一种不同的方法,但如果按钮是引用类型(即类),它就不起作用了,如果它是UIKit或AppKit类型,你可以直接将它传入,但有一种更通用的方法可能更好。传入闭包以充当完成处理程序:

func计时器(Hz:TimeInterval,time:Double=10,onCompletion处理程序:@escaping()->Void){
让info=ProcessInfo.ProcessInfo
让我们开始=info.systemUptime
变量A=0
//做点什么
var diff=(info.systemUptime-begin)
打印(“时间运行\n”)
设timer=timer.scheduledTimer(withTimeInterval:Hz,repeats:true){timer in
差异=(info.systemUptime-begin)
如果(差异>=时间){
timer.invalidate()
打印(“完成”)
A=1

handler()//您的代码似乎不必要地复杂(尽管可能我还不了解目标)。假设我们想禁用按钮10秒钟,然后应该再次启用它。然后我们会说

    self.myButton.isEnabled = false
    self.toggleEnabled(self.myButton, after:10)
其中
toggleEnabled
如下所示:

func toggleEnabled(_ enabled:UIButton, after t:Double) {
    Timer.scheduledTimer(withTimeInterval: t, repeats: false) { _ in
        enabled.isEnabled.toggle()
    }
}
如果你真的想,你可以使用一个协议来隐藏这是一个UIButton的事实,但是仅仅做这么简单的事情几乎不需要

func toggleEnabled(_ enabled:UIButton, after t:Double) {
    Timer.scheduledTimer(withTimeInterval: t, repeats: false) { _ in
        enabled.isEnabled.toggle()
    }
}