我有一个 Float 数组(即 [Float]),我需要从 Swift 调用一个需要UnsafeMutablePointer<Float>. 进行转换的正确方法是什么?
斯威夫特 4/5:
如果要将“Float”数组复制到新分配的内存中,请使用以下代码:
// A float array
let floats : [Float] = [/* ... */]
// Allocating sufficient space to store or data
let pointerToFloats = UnsafeMutablePointer<Float>.allocate(capacity: floats.count)
// Copying our data into the freshly allocated memory
pointerToFloats.assign(from: floats, count: floats.count)
// Here you can use your pointer and pass it to any function
pointerWork(pointerToFloats)
Run Code Online (Sandbox Code Playgroud)
但是,如果您想使用当前数组的 相同内存,请使用以下行:
let pointerToFloats = UnsafeMutablePointer<Float>.init(mutating: floats)
Run Code Online (Sandbox Code Playgroud)
在这里,您不必将数据分配给内存,因为指针引用浮点数组的同一连续内存