In Xcode 8 mit Swift 3 Beta 6 gibt es keine Funktion sizeof(). Aber wenn Sie möchten, können Sie eine für Ihre Bedürfnisse definieren. Die gute Nachricht ist, dass diese neue sizeof-Funktion wie erwartet mit Ihrem Array funktioniert.
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
Sie müssen alle Versionen der sizeof-Funktion, um die Größe einer Variablen zu erhalten und die richtige Größe eines Datentyps und eines Arrays zu erhalten.
Wenn Sie nur die zweite Funktion definieren, dann ergeben sizeof (UInt8.self) und sizeof (Bool.self) "8". Wenn Sie nur die ersten beiden Funktionen definieren, ergibt sizeof (testArray) "8".
Ich brauche die Array-Länge in Bytes. Dein Code wird nicht kompiliert. – Darx
@Darx: Siehe aktualisierte Antwort. –
Danke. Funktioniert und ich bin glücklich. 2 Stunden verschwendet ... aber sowieso funktioniert es jetzt. :) – Darx