一般来说,我刚接触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()我用这个函数和一个按钮创建了一个干净的项目,结果是一样的。项目中没有使用quic库。
有人能帮帮忙吗?
发布于 2020-10-21 21:42:02
我在不同的上下文中也遇到了同样的错误,在XCode 12.0.1中也是如此。It 可能不相关,但我怀疑这是访问主线程的循环的问题。我只是在尝试我在网上找到的一些介绍性代码,并面临着同样的问题,所以这是一个bug,而不是你的代码的问题。下面是如何获得具有相同问题的代码的方法:
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)话虽如此,通过重写代码,我能够防止这个问题。也许你可以在下面的代码中找到一些东西来解决你的特定问题:
具体地说,不使用以下代码(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)
}
}
}
}
}我使用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()
}
}发布于 2020-10-06 23:53:11
我在Widget Target中也遇到了同样的问题,但通过将"public“添加到变量来解决它。
固定结构如下所示。
struct LastCommitEntry: TimelineEntry {
public let date: Date
public let commit: Commit
}发布于 2021-04-18 13:31:53
重新启动我的模拟器起到了作用。
https://stackoverflow.com/questions/64029844
复制相似问题