В Xcode 8 с Swift 3 beta 6 нет функции sizeof(). Но если вы хотите, вы можете определить его для своих нужд. Хорошей новостью является то, что эта новая функция sizeof работает так, как ожидалось, с вашим массивом.
let bb: UInt8 = 1
let dd: Double = 1.23456
func sizeof <T> (_ : T.Type) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ : T) -> Int
{
return (MemoryLayout<T>.size)
}
func sizeof <T> (_ value : [T]) -> Int
{
return (MemoryLayout<T>.size * value.count)
}
sizeof(UInt8.self) // 1
sizeof(Bool.self) // 1
sizeof(Double.self) // 8
sizeof(dd) // 8
sizeof(bb) // 1
var testArray: [Int32] = [2000,400,5000,400]
var arrayLength = sizeof(testArray) // 16
Вам нужны все версии функции SizeOf, чтобы получить размер переменной и, чтобы получить правильный размер типа данных и массива.
Если вы определяете только вторую функцию, то sizeof (UInt8.self) и sizeof (Bool.self) приведет к «8». Если вы определяете только первые две функции, то sizeof (testArray) приведет к «8».
Мне нужна длина массива в байтах. Ваш код не компилируется. – Darx
@Darx: См. Обновленный ответ. –
Спасибо. Работает, и я счастлив. Отработано 2 часа ... но в любом случае теперь это работает. :) – Darx