Иногда мне нужно очистить часть байтового массива до нуля. С для l oop это медленно. Гораздо быстрее использует функцию memset (). У меня есть следующий код, который очищает элементы от 200 до 299 массива «a».
var a: [UInt8] = [UInt8](repeating: 1, count: 1000) // a[0..999] set to 1
start = 200
length = 100
memset(&a + start, 0, length) // a[100..199] set to 0
Это работало хорошо, пока не вышел Swift 5.2 с Xcode 11.4. Теперь это тоже работает, но появляется предупреждение:
Выражение Inout создает временный указатель, но аргумент # 1 должен быть указателем, который переживает вызов '+'
Как это можно сделать , чтобы не было предупреждения. У кого-нибудь есть идея?
Еще несколько объяснений - это whows в Xcode:
Неявное преобразование аргумента из «[UInt8]» в «UnsafeMutableRawPointer» создает указатель, действительный только для продолжительность вызова '+'
Используйте метод 'withUnsafeMutableBytes' в массиве для явного преобразования аргумента в указатель буфера, действительный для определенной области
Я не понимаю, что это значит.