Come calcolare la dimensione totale dell'oggetto NSDictionary
? Ho 3000 oggetti StudentClass in NSDictionary
con chiavi diverse. E voglio calcolare la dimensione totale del dizionario in KB. Ho usato malloc_size()
ma restituisce sempre 24 (NSDictionary
contiene 1 oggetto o 3000 oggetto) sizeof()
restituisce sempre uguale.Come calcolare la dimensione totale dell'oggetto NSDictionary?
risposta
Si potrebbe provare a ottenere tutte le chiavi del dizionario in una matrice e quindi iterare la matrice per trovare la dimensione, potrebbe darvi la dimensione totale delle chiavi all'interno del dizionario.
NSArray *keysArray = [yourDictionary allValues];
id obj = nil;
int totalSize = 0;
for(obj in keysArray)
{
totalSize += malloc_size(obj);
}
Il modo migliore per calcolare la dimensione del grande NSDictionary
, penso, sarebbe la conversione in NSData
e ottenere la dimensione dei dati. In bocca al lupo!
Convertendo in NSData possiamo calcolare la dimensione corretta dell'oggetto NSDictionary in byte? Oppure fornisce la dimensione dell'oggetto NSData convertito, che non è la stessa cosa con la dimensione dell'oggetto NSDictionary? – Shamsiddin
potrebbe essere utile per convertire al NSData se il dizionario contiene classi standard (ad esempio NSString.) E non quelli custome:
NSDictionary *yourdictionary = ...;
NSData * data = [NSPropertyListSerialization dataFromPropertyList:yourdictionary
format:NSPropertyListBinaryFormat_v1_0 errorDescription:NULL];
NSLog(@"size of yourdictionary: %d", [data length]);
si possono anche trovare in questo modo:
NSDictionary *[email protected]{@"a": @"Apple",@"b": @"bApple",@"c": @"cApple",@"d": @"dApple",@"e": @"eApple", @"f": @"bApple",@"g": @"cApple",@"h": @"dApple",@"i": @"eApple"};
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dict forKey:@"dictKey"];
[archiver finishEncoding];
NSInteger bytes=[data length];
float kbytes=bytes/1024.0;
NSLog(@"%f Kbytes",kbytes);
Ecco la domanda simulata: http://stackoverflow.com/questions/8223560/how-to-find-the-size-of-any-object-in-ios – Ossir