Я хочу получить доступ к существующему массиву 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) {
Это правильный подход?Если да, то почему я получаю фатальную ошибку?