如何在Swift中的NSNetService上使用getInputStream()?

Mar*_*ijn 1 pointers nsstream nsnetservice swift

我正在尝试建立一个NSInputStreamNSOutputStream一个Bonjour连接NSNetService.getInputStream方法需要类型的参数UnsafeMutablePointer<NSInputStream?>:

public func getInputStream(inputStream: UnsafeMutablePointer<NSInputStream?>, outputStream: UnsafeMutablePointer<NSOutputStream?>) -> Bool
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,inputStream和outputStream保持为nil并且成功为false:

    let inputStream:UnsafeMutablePointer<NSInputStream?> = nil
    let outputStream:UnsafeMutablePointer<NSOutputStream?> = nil

    var succes = service.getInputStream(inputStream, outputStream: outputStream)
Run Code Online (Sandbox Code Playgroud)

另一个问题是我无法将其作为'NSInputStream'来处理,因为它的类型为'UnsafeMutablePointer'.当我尝试这个时,我收到以下错误:

Error:(52, 13) value of type 'UnsafeMutablePointer<NSInputStream?>' (aka 'UnsafeMutablePointer<Optional<NSInputStream>>') has no member 'delegate'

在swift中处理这些可变指针类型的正确方法是什么?任何帮助将不胜感激,谢谢!

Mar*_*n R 7

你的指针是nil因为你没有为它们分配内存.但更简单的解决方案是将NSIn/OutputStream?变量作为inout-argument 传递给&:

var inputStream : NSInputStream?
var outputStream : NSOutputStream?

let success = service.getInputStream(&inputStream, outputStream: &outputStream)
Run Code Online (Sandbox Code Playgroud)