请问您如何才能正确地从NSInputStream中读取内容?
我不太理解UnsafePointer是什么,以及它的用途(还有UnsafeArray)。
NSInputStream的read函数会得到一个CMutablePointer对象,该对象可以被UnsafePointer填充。
相比Java的Streams来说,这真的很混乱。
你有什么建议吗?
谢谢!
请问您如何才能正确地从NSInputStream中读取内容?
我不太理解UnsafePointer是什么,以及它的用途(还有UnsafeArray)。
NSInputStream的read函数会得到一个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"
解释: read 方法签名: stream.read(<#buffer: UnsafeMutablePointer#>, maxLength: <#Int#>)
该方法的第一个参数是一个 UnsafeMutablePointer,这意味着该方法希望得到一个类型为 UInt8 的数组的指针 - 而不是数组本身
因此,在变量 buffer 的名称前面添加 & 符号。 &buffer == 名为 buffer 的 UInt8 数组对象的指针。