Мой старый ответ ниже устарел и был на некоторое время. Ссылка Рудофа на NSOrderedSet/NSMutableOrderedSet является правильной, поскольку эти классы были добавлены после этого Q и моего A.
Старый ответ
Как сказал Ричард, NSMutableSet работает хорошо, но только если вам не нужно поддерживать упорядоченную коллекцию. Если вам нужна упорядоченная коллекция, вам будет проще проверить содержимое:
if (![myMutableArray containsObject:newObject])
[myMutableArray addObject:newObject];
Обновление на основе комментария
Вы можете обернуть это методом, подобным -addUniqueObject:, и поместить его в категорию NSMutableArray .
Ответ 2
Подробнее 2012-й ответ (в случае, если кто-то наткнулся на это в будущем):
Используйте NSOrderedSet и NSMutableOrderedSet.
Заметка о производительности прямо из NSOrderedSet docs:
Вы можете использовать упорядоченные наборы как альтернативу массивам, когда порядок элементов важен, а производительность при проверке того, содержит ли объект в наборе, - это тестирование для членства в массиве медленнее, чем тестирование для членство в наборе.
Ответ 3
Используйте NSMutableSet, это лучше всего для этих ситуаций