Mi chiedo se questo influisce molto sulle prestazioni o sul consumo di memoria. Ho bisogno di un NSMutableArray e all'inizio posso solo immaginare quanti oggetti verranno aggiunti. Circa 3 a 5 forse. Quindi lo creo in questo modo:Quanto conta se creo un NSMutableArray con capacità = 3 invece di capacità = 50?
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:3];
Cosa succede esattamente qui, quando lo si crea con una capacità di 3 anziché di 50, ad esempio? Sarebbe una cattiva idea crearlo con la capacità di 1, sapendo che ci saranno almeno 20 elementi? O non importa abbastanza da prendere qualche mal di testa su di esso? Ho 10 di questi array nella mia app e devono essere caricati tutti all'inizio.
ottimi dettagli! anche le altre risposte erano grandiose. non è mai stato così difficile sceglierne uno come accettato. tutti votati ringrazia tutti! –
Con tutto il rispetto, penso che questa risposta non sia corretta. Sebbene in determinati casi la capacità venga utilizzata per suggerire, non è vero che la creazione di un array mutabile con una capacità di un gigabyte alloca immediatamente un gigabyte di memoria. Se non mi credi, prova tu stesso. NSMutableArray * bigArray = [[NSMutableArray alloc] initWithCapacity: 1024 * 1024 * 1024]; if (! BigArray) { NSLog (@ "Array non è stato creato!"); } else { NSLog (@ "Sì, è stato creato."); } Se in realtà compili questo array, vedrai aumentare l'utilizzo della memoria. Non prima. – peterb
La documentazione di initWithCapacity afferma che restituisce "un array inizializzato con sufficiente memoria per contenere oggetti numItems". Sembrerebbe esserci qualche discrepanza tra ciò che Peterb ha osservato e ciò che afferma la documentazione. – fbrereto