SWIFT ONLY - 从NSInputStream读取

joh*_*hni 13 nsinputstream nsstream swift

你能解释一下我如何从NSInputStream中正确阅读?

我无法理解什么是UnsafePointer以及它的用途(也适用于UnsafeArray).

NSInputStream读取函数获取CMutablePointer,可以使用UnsafePointer对象填充该CMutablePointer.

与Java的Streams相比,这真是一团糟.

你会推荐什么 ?

谢谢!

joh*_*hni 22

我自己弄清楚了.

看看这个简单的代码:

let data: NSData = "Jonathan Yaniv.".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
let stream: NSInputStream = NSInputStream(data: data)

var buffer = [UInt8](count: 8, repeatedValue: 0)

stream.open()

if stream.hasBytesAvailable {
    let result :Int = stream.read(&buffer, maxLength: buffer.count)
}

//  result = 8 -- because of the size of the buffer.
//  buffer contains the first 8 bytes repreenting the word "Jonathan"
Run Code Online (Sandbox Code Playgroud)

Explanation:读取方法签名:stream.read(<#buffer:UnsafeMutablePointer#>,maxLength:<#Int#>)

它将UnsafeMutablePointer作为第一个参数,这意味着该方法希望获得一个类型为UInt8的数组的POINTER - 而不是数组本身

因此,我们在缓冲区变量的名称前添加&符号.&buffer ==指向名为buffer的UInt8数组对象的指针.