Rap*_*ael 2 outputstream stream binary-data swift swift5
这段代码过去很好(从编译器没有抱怨的意义上说):
extension OutputStream {
func write(_ data: Data) -> Int {
return data.withUnsafeBytes { pointer in
return self.write(pointer, maxLength: data.count)
}
}
}
Run Code Online (Sandbox Code Playgroud)
从 Swift 5.0 开始,这会产生警告:
警告:不推荐使用“withUnsafeBytes”:
withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R改用
我试着用所提出的方法,但我似乎无法缠斗UnsafeRawBufferPointer到UnsafePointer<UInt8>这OutputStream.write最终需要。
如何以非弃用的方式编写此函数?
诀窍是使用bindMemory函数:
func write(_ data: Data) -> Int {
return data.withUnsafeBytes({ (rawBufferPointer: UnsafeRawBufferPointer) -> Int in
let bufferPointer = rawBufferPointer.bindMemory(to: UInt8.self)
return self.write(bufferPointer.baseAddress!, maxLength: data.count)
})
}
Run Code Online (Sandbox Code Playgroud)
虽然这适用于 Swift 5.0,但显然存在一些问题;参见相关论坛讨论。
| 归档时间: |
|
| 查看次数: |
2253 次 |
| 最近记录: |