gpt4 book ai didi

ios - 异步回调中的递归(Swift)

转载 作者:行者123 更新时间:2023-11-28 05:51:25 33 4
gpt4 key购买 nike

下面是一些代码,它旨在使手机振动(异步),等待此任务完成,然后立即使其再次振动:

func vibrate() {
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
AudioServicesAddSystemSoundCompletion(SystemSoundID(kSystemSoundID_Vibrate), nil, nil, { (soundId, clientData) -> Void in
self.vibrate()
}, nil)
}

Xcode 给出以下错误:

A C function pointer cannot be formed from a closure that captures context

如何从这个异步函数内部递归?

最佳答案

我正在努力寻找您问题的解决方案,我偶然发现了这个线程:https://forums.swift.org/t/a-c-function-pointer-cannot-be-formed-from-a-local-function-that-captures-context-on-swift-package/9388/6

我确实将 vibrate() 方法封装到一个新的结构中,如下所示:

import AudioToolbox
import CoreAudioKit

struct Vibrator {
static func vibrate() {
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
AudioServicesAddSystemSoundCompletion(SystemSoundID(kSystemSoundID_Vibrate), nil, nil, { (soundId, clientData) in
Vibrator.vibrate()
}, nil)
}
}

当然可以这样调用它:Vibrator.vibrate()。瞧!

希望对您有所帮助!

关于ios - 异步回调中的递归(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52827593/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com