Zwykle różnica między językami zorientowanymi obiektowo i tablicami o różnych rozmiarach jest następująca: narzut, który otrzymasz, oraz błędy stron na poziomie pamięci.
Aby umieścić to w inny sposób, wyobraź sobie, że masz obiekt, który żąda 5 spacji w pamięci (tak jak pierwszy przykład), a drugi obiekt nie rezerwuje żadnej przestrzeni. Dlatego, gdy obiekt musi zostać dodany do pierwszego, będzie już miejsce w pamięci, aby po prostu się zapadło, z drugiej strony nieprzydzielony obiekt najpierw będzie żądał miejsca w pamięci, a następnie doda je do szyk. To nie brzmi tak źle na tym poziomie, ale kiedy twoje tablice zwiększają rozmiar, staje się to ważniejsze.
Od Apple's documentation:
arrayWithCapacity:
Tworzy i zwraca obiekt NSMutableArray z wystarczająco przydzielonej pamięci początkowo pomieścić określoną liczbę przedmiotów. ... Początkowa pojemność nowej tablicy. Zwracana wartość Nowy obiekt NSMutableArray z dostatecznie zaalokowaną pamięcią do przechowywania obiektów numItems.
Nie jest to dokładny duplikat któregokolwiek z tych pytań, chociaż jest bardzo zbliżony do najwyższego. – JeremyP
możliwy duplikat [Objective-c NSArray init versus initWithCapacity: 0] (http://stackoverflow.com/questions/6077422/objective-c-nsarray-init-versus-initwcapacity0), [NSMutableArray initWithCapacity: nuances] (http: //stackoverflow.com/questions/3948062/), –