Коллекции

Cocoa

В Cocoa и Cocoa Touch, коллекции Foundation framework используются для хранения и управления группами объектов. Их основная задача состоит в сохранении объектов в форме: массива, словаря или набора.

Cocoa collections

Эти классы облегчают задачу управления группами объектов. Foundation коллекции являются эффективным и широко используется Mac OS X и IOS.

С первого взгляда

Коллекции имеют ряд особенностей. Большинство коллекций содержат только объекты и могут быть изменяемыми (mutable) и неизменными.

Все коллекции обладают рядом общих задач, которые включают в себя:

  • Перечисление объектов в коллекции
  • Определение, находится ли объект в коллекции
  • Доступ к отдельным элементам в коллекции

Изменяемые (mutable) коллекции позволяют рассмотреть также некоторые дополнительные задачи:

  • Добавление объектов в коллекцию
  • Удаление объектов из коллекции

Коллекции имеют много общих характеристик, но в тоже время есть и важные различия. В результате, вы обнаружите, что некоторые коллекции лучше подходят для конкретной задачи, чем другие. Потому что, насколько хорошо осуществляется коллекция зависит от того, как она используется, вы должны выбрать ту коллекцию, которая лучше всего подходит для конкретной задачи.

Доступ по индексам и легкое перечисление элементов: Массивы

Массивы (например, NSArray и NSMutableArray) упорядоченные коллекции, которые позволяют индексировать доступ к их содержимому. Вы можете использовать массив для хранения информации, которая, к примеру, будет представлена ​​в элементе управления Table View.

Соответствующие разделы: "Массивы: Упорядоченные коллекции".

Ассоциирование данных с произвольным ключем: Словари

Словари (например NSDictionary и NSMutableDictionary) являются неупорядоченными наборами, которые позволяют получить доступ к их содержимому с помощью ключа-значения. Они также позволяют производить быстрые операции вставки и удаления. Словари полезны для хранения значений, которые имеют смысл в зависимости от их ключа. Например, у вас может быть словарь с информацией о России, со "столица" в качестве ключа и "Москва", как соответствующее значение.

Соответствующие разделы: "Словари: Коллекции ключ-значение".

Предоставление быстрых вставки, удаления и проверки членства: Наборы

Наборы (например, NSSet, NSMutableSet и NSCountedSet) являются неупорядоченными коллекциями объектов. Наборы позволяют операции быстрой вставки и удаления. Они также позволяют Вам быстро увидеть, является ли объект членом коллекции. NSSet и NSMutableSet хранят коллекции различных объектов, в то время как NSCountedSet хранит коллекции однотипных объектов. Например, предположим, у вас есть целый ряд городских объектов, и вы хотите, посетить каждый только один раз. Если Вы храните каждый город, который вы посетите в наборе, вы можете быстро и легко посмотреть посетили ли вы его.

Соответствующие разделы: "Наборы: Неупорядоченные коллекции объектов".

Хранение подмножества массива: Индексные наборы

Индексные наборы (например, NSIndexSet и NSMutableIndexSet) являются вспомогательными объектами, которые расширяют возможности массивов. Они позволяют хранить подмножества массива в массиве для хранения индексов, а не путем создания нового массива. Вы можете использовать множество индексов, чтобы позволить пользователю выбрать несколько элементов из списка записей. Например, предположим, у вас есть таблицы, и вы позволяет пользователю выбрать несколько строк. Поскольку строки хранятся в виде массива, можно сохранить выбранные в качестве набора индексов в этом массиве.

Соответствующие разделы: "Индексные наборы: Хранение подмножества массивов".

Хранение пути через вложенные массивы: Индекс пути

Индекс путей хранить размещение информации в более сложной иерархии коллекции, в частности, вложенных массивов. Cocoa содержит класс NSIndexPath для этой цели. Например, путь с индексом 1.4.3.2 указывает путь как показано ниже:

Cocoa index path

Хотя они не являются коллекциями в самом прямом смысле, индекс путей облегчает задачу управления вложенными массивами. Класс UITableView широко используется индекс путей для хранения местоположения в таблице.

Соответствующие разделы: " Индекс пути: Хранение пути через вложенные массивы".

Настройка памяти и параметров хранения: коллекций указателей классов (Mac OS X)

Если вам нужны коллекции для хранения произвольных указателей или целых чисел, или нужно использовать обнуляемые слабые (weak) ссылки в среде сборки мусора, есть три класса коллекций указателей: NSPointerArray, NSMapTable и NSHashTable. Они похожи на NSMutableArray, NSMutableDictionary и NSMutableSet соответственно.Три класса коллекции указателей предоставляют дополнительные опции для определения, как коллекция управляет его содержанием. Вы можете, например, использовать указатель равенства вместо вызова isEqual: при сравнении. В отличие от всех других классов коллекций, NSPointerArray имеет право содержать NULL указатель.

Соответствующие разделы: "Массивы: Упорядоченные коллекции", "Словари: Коллекции ключ-значение", "Наборы: Неупорядоченные коллекции объектов", "Параметры указателя на функцию".

Работа с коллекциями: Копирование и Перечисление

В дополнение к классам, определяющим поведение, есть некоторые задачи, которые являются общими в аналогичной форме между классами коллекций. Две из этих задач: копирования коллекции и перечисление ее содержимого.

Если вам необходимо создать новую коллекцию с содержанием другй, вы можете выбрать либо неполное или полное копирование. В неполной копии каждый объект сохраняется, когда он будет добавлен в новую коллекцию и будет в общем владении для двух или более коллекций. В полной копии каждому объекту передается сообщение copyWithZone:, как только он добавляется в коллекцию, вместо его сохранения.

Если вам необходимо проверить каждый элемент в коллекции на некоторые условия или выполнить некоторые действия для выборочной записи, вы можете использовать один из предлагаемых способов перечисления содержимого коллекции. Два основных способа перечисления, это быстрые и блочные перечисления.

Соответствующие разделы: "Копирование коллекций" и "Перечисление: Обход элементов коллекции".
 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac