我想访问一个现有的 UInt64 数组,就好像它是一个 Int8 数组一样。关键要求是效率——我不想复制或重新分配数据,只想直接访问。我不想要副作用(例如,我希望在执行此代码块后能够继续使用 uint64Array,正在阅读有关重新绑定具有未定义副作用的信息。)
我尝试使用 Swift 4.2 执行此操作:
var uint64Array = [UInt64](repeating: 0, count: 100)
uint64Array.withUnsafeMutableBufferPointer() {
uint64Pointer in
uint64Pointer.withMemoryRebound(to: Int8.self) { // <- Error occurs here.
int8Pointer in
int8Pointer[0] = 1
int8Pointer[1] = 2
int8Pointer[2] = 3
int8Pointer[3] = 4
}
}
但是,我在运行时在以下行出现致命错误:
uint64Pointer.withMemoryRebound(to: Int8.self) {
这是正确的方法吗?如果是这样,为什么我会收到致命错误?