gpt4 book ai didi

swift - 如何修复逃逸闭包?错误是: Converting non-escaping value may allow it to escape

转载 作者:行者123 更新时间:2023-11-30 10:34:50 26 4
gpt4 key购买 nike

这是我的代码:

class Main {
init() {
let x = Sub(s: foo)
}

func foo(completion: @escaping (String?)->Void) {
DispatchQueue.global().async {
completion(nil)
}
}
}

class Sub {
var s: ((String?)->Void)->Void
init(s: @escaping ((String?)->Void)->Void) {
self.s = s
}
}

我在这里遇到错误let x = Sub(s: foo)

Converting non-escaping value to '(String?) -> Void' may allow it to escape`

我已经添加了 XCode 提示我添加的所有转义符,但错误仍然存​​在。我需要做什么来解决这个问题?

最佳答案

您需要另一层@escaping:

class Sub {
var s: (@escaping (String?) -> Void) -> Void

init(s: @escaping (@escaping (String?) -> Void) -> Void) {
self.s = s
}
}

关于swift - 如何修复逃逸闭包?错误是: Converting non-escaping value may allow it to escape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58273197/

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