2010-07-28 6 views
12

Просто интересно, есть ли эквивалент Java ArrayList в Objective-C?Objective C, эквивалентный ArrayList Java

Или что-то, что можно использовать для хранения объектов/данных, которые не имеют установленного размера.

Спасибо.

ответ

17

Как указывали другие, NSArray/NSMutableArray - это то, что вы ищете.

Исходя из мира Java, вы можете обнаружить, что предложения коллекции Cocoa кажутся довольно ничтожными. Фактически, функциональность довольно обширна. NSArray, NSDictionary и NSSet являются, фактически, class clusters, что означает, что открытый API является «абстрактным» классом. Когда вы инициализируете одну из коллекций, то, что вы получаете, фактически является конкретной реализацией, адаптированной для данных, которые вы предоставляете. Эти реализации могут также изменять конкретную реализацию во время выполнения, если данные изменяются (например, они растут по размеру). Это все возможно из-за гораздо более динамического времени выполнения Objective-C, чем позволяет статическая типизация (и безопасность) Java. Таким образом, кластерная стратегия класса скрывает многие из реализаций, например. интерфейс java.util.List, за одним API.

Каркасы какао несколько ограничены в составных структурах данных (т. Е. Построены поверх «примитивных» массивов, множеств и словарей). Вы можете обнаружить, что отличный, открытый источник CHDataStructures заполняет многие пробелы.

+0

Я ищу то же, что и Хулио, и вижу много ответов, которые говорят: «Просто закройте глаза и используйте NS \ * Array ...». Но часто вы действительно хотите явно использовать связанный список, например. для постоянной вставки/удаления любого элемента (NS \ * Array не гарантирует этого). Выбор правильной структуры данных на основе вашего известного шаблона доступа имеет основополагающее значение для производительности. Как новичок в развитии iOS, я не понимаю, почему Cocoa, похоже, отнимает это решение от программиста? –

15

NSMutableArray. Вы можете добавлять к нему объекты по мере необходимости.

+0

безупречное спасибо! благодаря! – Julio

Смежные вопросы