2011-08-11 12 views

Odpowiedz

16

Musisz zrozumieć, że w klasach podstawowych, takich jak NSArray, itp., nie jest tym, czego nauczyłeś się jako tablica itp. W twojej początkowej klasie programistycznej. W szczególności nie ma charakterystyk wydajności, które normalnie kojarzysz z tablicą.

W tym miejscu znajduje się wiele ciekawych postów na blogu, np. jeden przez Ridiculous Fish i inny przez Cocoa with Love

Tak, jak wszyscy inni powiedzieli, po prostu użyj NSMutableArray.

+0

Dla dużych kolekcji tablice mają straszne wstawianie/usuwanie wydajności – jjxtra

+10

Tak, ale 'NSMutableArray' nie jest tablicą. – Yuji

+0

D'oh! To wyjaśnia to. – sudo

12

NSMutableArray jest najbliżej tego. Pomimo nazwy jest bliżej listy niż tablicy. Jednakże, "dołączanie i usuwanie elementów z dowolnego końca zajmuje stały czas", zgodnie z this.

Ponadto, co na ten temat, implementacja innych firm: https://github.com/mschettler/NSLinkedList

+6

+1 'NSArray' ma * tonę * optymalizacji pod maską, a korzystanie z wbudowanego rozwiązania jest zawsze najlepszą opcją. Ponieważ dołączanie do dowolnego końca jest operacją o stałym czasie, potrzeba faktycznej połączonej listy jest zanegowana, ponieważ 'NSArray' ma już pożądaną charakterystykę wydajności. –

+0

Czy masz źródło do dołączania i usuwania cech spektaklu? Ctrl + F nie wymyśla linii, którą cytujesz w dokumentacji. – Joren

+0

Ah, przepraszam - to z innej strony :) –

4

Nie ma bezpośredniego odpowiednika. Napisanie połączonej listy samemu jest dość łatwe, ale wątpię, czy uzyskasz dużą wydajność w porównaniu z NSMutableArray.

Istnieje kilka różnych implementacji połączonych list w otwartym kodzie źródłowym CHDataStructures.

1

NSMutableArray jest tablicą wektorową lub dynamiczną, ale jest to , a nie.

+0

, jeśli NSMutableArray jest tablicą wektorową lub dynamiczną. Jaki byłby i odpowiadający połączonej liście w celu-c? – user2924482

Powiązane problemy