在Swift 3.1中,不建议使用UnsafeMutablePointer.initialize(from :)。Xcode建议我改用UnsafeMutableBufferPointer.initialize(from :)。我有一个看起来像这样的代码块:
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 64)
pointer.initialize(from: repeatElement(0, count: 64))
由于不推荐使用,该代码给了我编译时警告。因此,我将其更改为:
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 64)
let buffer = UnsafeMutableBufferPointer(start: pointer, count: 64)
_ = buffer.initialize(from: repeatElement(0, count: 64))
这是正确的方法吗?我只是想确保自己做的正确。
没错,但是您可以使用以下方法稍微简单一些地分配和初始化内存
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 64)
pointer.initialize(to: 0, count: 64)
创建缓冲区指针视图仍然有用,因为它是一个集合,具有一个count
属性并且可以枚举:
let buffer = UnsafeMutableBufferPointer(start: pointer, count: 64)
for byte in buffer {
// ...
}
但这与内存的初始化方式无关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句