Zastanawiam się, czy ma to wpływ na wydajność lub zużycie pamięci. Potrzebuję NSMutableArray i na początku mogę tylko zgadywać, ile obiektów zostanie dodanych. Około 3 do 5 może. Stworzyłem go w ten sposób:Ile to ma znaczenie, jeśli utworzę NSMutableArray o pojemności = 3 zamiast o pojemności = 50?
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:3];
Co dzieje się tutaj dokładnie, podczas tworzenia go o pojemności 3 zamiast 50 na przykład? Czy byłoby złym pomysłem utworzenie go o pojemności 1, wiedząc, że będzie co najmniej 20 elementów? Czy to nie ma znaczenia, aby trochę bóle głowy na to? Mam 10 takich tablic w mojej aplikacji i wszystkie muszą się załadować na starcie.
świetne szczegóły! inne odpowiedzi też były świetne. uznał, że nigdy nie jest tak trudne, aby wybrać jeden zaakceptowany. wszyscy głosowali w górę. Dziękuje wszystkim! –
Z całym szacunkiem, myślę, że ta odpowiedź jest błędna. Mimo że w niektórych przypadkach pojemność jest wykorzystywana do podpowiedzi, to nie jest tak, że utworzenie tablicy zmiennych o pojemności gigabajta natychmiast przydzieli gigabajt pamięci. Jeśli mi nie wierzysz, spróbuj sam. NSMutableArray * bigArray = [[NSMutableArray alloc] initWithCapacity: 1024 * 1024 * 1024]; if (! BigArray) { NSLog (@ "Array was not created!"); } else { NSLog (@ "Tak, został utworzony."); } Jeśli faktycznie wypełnisz tę tablicę, zobaczysz wzrost wykorzystania pamięci. Nie przed. – peterb
Dokumentacja dla initWithCapacity stwierdza, że zwraca "tablicę zainicjowaną z wystarczającą pamięcią do przechowywania obiektów numItems." Wydaje się, że istnieją pewne rozbieżności między tym, co zaobserwował Peterb a tym, co twierdzi dokumentacja. – fbrereto