你能解释一下如何从 NSInputStream 中正确读取吗?
我不明白什么是 UnsafePointer 以及它的用途(也适用于 UnsafeArray)。
NSInputStream 读取函数获取一个 CMutablePointer,它可以用 UnsafePointer 对象填充。
与 Java 的 Streams 相比,这真是一团糟。
你会推荐什么 ?
谢谢!
你能解释一下如何从 NSInputStream 中正确读取吗?
我不明白什么是 UnsafePointer 以及它的用途(也适用于 UnsafeArray)。
NSInputStream 读取函数获取一个 CMutablePointer,它可以用 UnsafePointer 对象填充。
与 Java 的 Streams 相比,这真是一团糟。
你会推荐什么 ?
谢谢!
我自己已经弄清楚了。
看看这个简单的代码:
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"
说明:读取方法签名:stream.read(<#buffer: UnsafeMutablePointer#>, maxLength: <#Int#>)
它获取一个 UnsafeMutablePointer 作为第一个参数,这意味着该方法期望获取一个指向 UInt8 类型数组的 POINTER - 而不是数组本身
因此,我们在缓冲区变量的名称前添加了 & 符号。&buffer == 指向名为 buffer 的 UInt8 数组对象的指针。