我有一个异步函数,它必须在计时器内每给定时间调用一次。为了避免Xcode错误,
func firetimer() {
let newtimer = Timer(timeInterval: 1.0, repeats: true) { newtimer in
self.myAsyncFunction() // 'async' call in a function that does not support concurrency
}
RunLoop.current.add(newtimer, forMode: .common)
}
我试着把它放进一项任务中,但这给了我一个";线程1:EXC_BAD_ACCESS(代码=1,地址=0x0(";运行时出错。
func firetimer() {
let newtimer = Timer(timeInterval: 1.0, repeats: true) { newtimer in
Task{
await self.myAsyncFunction() // not working
}
}
RunLoop.current.add(newtimer, forMode: .common)
}
事实上,我不需要任何等待,函数的下一次出现可以在后者仍在工作时调用。有什么建议吗?谢谢
尝试创建一个支持函数:
- 支持函数是同步的,但异步调用
myAsyncFunction
:
func mySyncFunction() {
// Call the asynchronous function
Task {
await self.myAsyncFunction()
}
}
- 从
fireTimer
调用支持函数
func fireTimer() {
let newTimer = Timer(timeInterval: 1.0, repeats: true) { newTimer in
self.mySyncFunction() // Synchronous
}
RunLoop.current.add(newTimer, forMode: .common)
}
}