繁体   English   中英

如何修复 escaping 关闭? 错误是:转换非转义值可能允许它转义

[英]How to fix escaping closure? Error is: Converting non-escaping value may allow it to escape

这是我的代码:

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)

将非转义值转换为 '(String?) -> Void' 可能允许它转义`

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

您需要另一层@escaping

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM