请问您如何从NSInputStream中正确阅读?
我无法理解什么是UnsafePointer以及它的用途(也适用于UnsafeArray)。
NSInputStream读取函数获取一个可以用UnsafePointer对象填充的CMutablePointer。
与Java的Streams相比,这真是一团糟。
你会推荐什么?
谢谢!
答案 0 :(得分: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"
说明: 读取方法签名: stream.read(< #buffer:UnsafeMutablePointer#>,maxLength:< #Inst#>)
它将UnsafeMutablePointer作为第一个参数,这意味着该方法希望获得一个类型为UInt8的数组的POINTER - 不是数组本身
因此,我们添加&缓冲区变量名称前的表示法。 & buffer ==指向名为buffer的UInt8数组对象的指针。