流委托未调用

时间:2019-03-21 03:03:42

标签: ios swift networking stream cfstream

我正在尝试通过TLS在iPhone和BeagleBone Black Wireless之间发送数据。但是,我遇到了一些奇怪的问题。该问题所涉及的问题是为什么未调用委托方法stream(_:handle:)。我已经阅读了文档和其他StackOverflow问题,但是我的代码已经考虑了它们的问题。

这是我的变量:

private var readStream: Unmanaged<CFReadStream>?
private var writeStream: Unmanaged<CFWriteStream>?
private var inputStream: InputStream?
private var outputStream: OutputStream?

这是我打开流的代码:

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (socket.ipAddress as CFString), UInt32(socket.port), &readStream, &writeStream)

outputStream = writeStream?.takeRetainedValue()
inputStream = readStream?.takeRetainedValue()
outputStream?.delegate = self
inputStream?.delegate = self
outputStream?.schedule(in: .current, forMode: .default)
inputStream?.schedule(in: .current, forMode: .default)
outputStream?.open()
inputStream?.open()

这完全是我的代码中显示的委托方法(它是Xcode自动完成的,因此没有问题):

private func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
    print("Received event code \(eventCode.rawValue)")
}

但是由于某种原因,此方法从未被调用。实际上,我尝试通过写入outputStream来发送数据,而BBBW实际上已成功接收到该消息! (尽管,如果我尝试再次发送消息,则会出现Connection reset by peer错误。)

1 个答案:

答案 0 :(得分:0)

我知道了!

问题是我制作了委托方法private。一旦我摆脱了那个关键字,一切都解决了:)