在Swift 3.1中,不建议使用UnsafeMutablePointer.initialize(from :)

杰克

在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))

这是正确的方法吗?我只是想确保自己做的正确。

马丁·R

没错,但是您可以使用以下方法稍微简单一些地分配和初始化内存

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章