簡體   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