2009-07-29 19 views
15

Jaka jest różnica?NSMutableSet vs NSMutableArray

W moim kontekście, muszę mieć możliwość dynamicznego dodawania i usuwania obiektów. Użytkownik klika wiersze tabeli, które sprawdzają i wyłączają, a tym samym dodaje lub usuwa obiekt przywoływany z listy.

Dzikimi przypuszczeniami jest to, że tablica zawiera elementy indeksowane, a zestaw nie ma indeksów?

+0

Dzięki za uwagi! – Brenden

+1

Pamiętaj, aby zamiast odpowiedzi dodać odpowiedzi, które Ci pomogły. – amattn

Odpowiedz

29

An NSSet/NSMutableSet nie przechowuje elementów w żadnej określonej kolejności. NSArray/NSMutableArray przechowuje pozycje w określonej kolejności. Jeśli tworzysz widok tabeli, zdecydowanie powinieneś użyć tablicy jako swojego źródła danych.

+0

Ponadto, jeśli zamówienie jest nieistotne i często pytasz, czy dany element należy do grupy, czy nie, znacznie wydajniejsze jest używanie 'NSSet' niż' NSArray'. – GoRoS

23

Ponadto NSMutableSet zapewnia, że ​​wszystkie obiekty są unikatowe.

NSMutableArray dobrze pasuje do UITableView, ponieważ elementy mają indeks, więc możesz zwrócić [liczba tablic], aby uzyskać liczbę wierszy tabeli, lub [array objectAtIndex: rowNumber], aby łatwo powiązać element z wierszem.

+0

To jest coś, czego nie zdawałem sobie sprawy – Brenden

3

Ponadto, zgodnie z the documentation, testowanie członkostwa w obiekcie jest szybsze przy użyciu NSSets.

Można używać zestawów jako alternatywa do tablic gdy kolejność elementów nie jest ważne, a wydajność w testach, czy obiekt jest zawarty w zestawie jest brane pod uwagę, natomiast tablice są sortowane, testowanie członkostwo jest wolniejsze niż w przypadku zestawów.

0

Istnieją 3 główne różnice. 1) Zestawy są nieuporządkowane 2) Nie mają indeksu & 3) Nie mogą mieć zduplikowanych wartości, gdy uporządkowane są tablice, indeksowane & może przechowywać zduplikowane wartości.

Powiązane problemy