奇怪的错误 nw_protocol_get_quic_image_block_invoke dlopen libquic 失败

coi*_*ves 42 swift

我是 swift 和 iOS 的新手,请记住这一点。

打开 CFReadStream 时出现此错误。不管我是打开读流还是写流,应用程序总是失败。

    var readStream: Unmanaged<CFReadStream>?
    var writeStream: Unmanaged<CFWriteStream>?
    let host: CFString = NSString(string: hostIP)
    let port: UInt32 = UInt32(self.VNCport)
    
    self.password = password
    
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readStream, &writeStream)

    inputStream = readStream!.takeRetainedValue()
    outputStream = writeStream!.takeRetainedValue()
    
    if readStream == nil {
        print("Erro read")
    }
    
    if writeStream == nil {
        print("Erro write")
    }
    
    inputStream!.delegate = self
    outputStream!.delegate = self
    
    inputStream!.schedule(in: RunLoop.main, forMode: RunLoop.Mode.default)
    outputStream!.schedule(in: RunLoop.main, forMode: RunLoop.Mode.default)
    inputStream!.open()
    outputStream!.open()
Run Code Online (Sandbox Code Playgroud)

我只用这个函数和一个按钮做了一个干净的项目,结果是一样的。项目中没有使用 quic lib。

有人可以帮忙吗?

Ben*_*rth 6

我在不同的上下文中也遇到了同样的错误,在 XCode 12.0.1 中也是如此。它可能不相关,但我怀疑它与访问主线程的运行循环有关。我只是尝试了一些我在网上找到的介绍性代码,并遇到了同样的问题,所以这是一个错误,而不是您的代码的问题。以下是如何获得一段具有相同问题的代码:

git clone git@github.com:BestKora/CS193P-Fall-2017-Demo-iOS12.git
cd "CS193P-Fall-2017-Demo-iOS12/Cassini L10"
xed . # this opens XCode (CLI tool stands for XCode editor)
Run Code Online (Sandbox Code Playgroud)

话虽如此,通过重写代码,我能够防止这个问题。也许您可以在下面的代码中找到一些东西来解决您的特定问题:

具体来说,而不是使用以下 ( DispatchQueue.global)

    private func fetchImage() {
        if let url = imageURL {
            spinner.startAnimating()
            DispatchQueue.global(qos: .userInitiated).async { [weak self] in
                let urlContents = try? Data(contentsOf: url)
                DispatchQueue.main.async {
                    if let imageData = urlContents, url == self?.imageURL {
                        self?.image = UIImage(data: imageData)
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我使用URLSession.shared.dataTask,并且不再发生此错误:

    private func fetchImage() {
        print("fetching image")
        if let url = imageURL {
            
            let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
                guard let data = data else {
                    return
                }
                // maybe try dispatch to main
                DispatchQueue.main.async {
                    self.imageView.image = UIImage(data: data)
                }
            }
            task.resume()
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我已经在使用 URLSession...并在控制台中出现上述错误。 (4认同)

raj*_*rao 2

我在小部件目标中遇到了同样的问题,但通过向变量添加“public”来解决它。

固定结构如下所示。

struct LastCommitEntry: TimelineEntry {
    public let date: Date
    public let commit: Commit
}
Run Code Online (Sandbox Code Playgroud)