Делегат потока не вызван - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь передать данные между iPhone и беспроводной связью BeagleBone Black по протоколу TLS.Однако я сталкиваюсь с некоторыми странными проблемами.Проблема, о которой этот вопрос, состоит в том, почему метод делегата 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 голосов
/ 21 марта 2019

А, я понял!

Проблема заключалась в том, что я сделал метод делегата private. Как только я избавился от этого ключевого слова, все сработало:)

...