Objective C эквивалентен Java ArrayList - PullRequest
12 голосов
/ 28 июля 2010

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

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

Спасибо.

Ответы [ 2 ]

17 голосов
/ 28 июля 2010

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

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

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

15 голосов
/ 28 июля 2010

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

...