Gegeben:
%Vor% Sie erhalten entweder 4 oder 8, abhängig davon, ob Sie ein 32- oder 64-Bit-System verwenden. Beachten Sie, dass ich% ce_de% nicht gezielt initialisiert habe; Dies ist nicht notwendig, da foo
die Bytegröße von sizeof(foo)
angibt und foo
nur ein zufälliger Zeiger auf ein Objekt ist. Wäre es egal, wenn das foo
wäre, wären alle 4 oder 8.
Wenn Sie die zugewiesene Größe einer Instanz einer bestimmten Klasse haben möchten, bietet die Objective-C-Laufzeit eine Introspektions-API, die genau das tun kann. Allerdings kann ich mir keinen Grund vorstellen, warum das in einem Programm mehr als nur vorübergehend interessant wäre.
Beachten Sie, dass die Zuweisungsgröße einer Instanz keine Unterzuweisungen berücksichtigt. I.e. Ein NSArray hat wahrscheinlich einen Sicherungsspeicher, der eine separate Zuordnung ist.
Um es noch einmal zu sagen:
Wenn Sie von sizeof
sprechen, ist es nicht der richtige Weg herauszufinden, wie viele Daten ein NSArray enthält. Auf Objective-C-Objekte wird immer über Zeiger zugegriffen, und die Größe eines Zeigers auf dem iPhone beträgt 4 Byte. Das sagt dir sizeof
. Um herauszufinden, wie viele Objekte sich in einem Array befinden, fragen Sie das Array nach seinem count
.
Tags und Links objective-c ios4