A collection is a Foundation framework object whose primary role is to store objects in the form of arrays, dictionaries, and sets.
The primary classes—NSArray
, NSSet
, and NSDictionary
—share a number of features in common:
They can hold only objects, but the objects can be of any type. An instance of NSArray
, for example, could contain cats, dogs, or wombats, or any combination of these.
They maintain strong references to their contents.
They are immutable, but have a mutable subclass that allows you to change the contents of the collection.
You can iterate over their contents using NSEnumerator
or fast enumeration.
Cocoa also provides three classes—NSPointerArray
, NSHashTable
, and NSMapTable
—that are modeled on these classes but that differ in the following ways:
They may contain elements other than objects.
They offer other memory management options.
They are mutable.
Since a Cocoa collection object can hold any sort of object (unlike collections in some other environments), you typically don’t create special collection classes to contain objects of a particular type.
Collections store and vend other objects in a particular ordering scheme:
NSArray
and its mutable subclass NSMutableArray
use zero-based indexing.
In other environments, an array may be called a vector, table, or list.
NSPointerArray
is modeled after NSMutableArray
, but it can also hold NULL
values (which contribute to the object’s count). You can also set the count of the pointer array directly (something you can’t do in a traditional array).
NSDictionary
and its mutable subclass NSMutableDictionary
use key-value pairs.
In other environments, a dictionary may be referred to as a hash table or hash map.
NSMapTable
is modeled after NSMutableDictionary
but provides different options, in particular to support weak relationships in a garbage-collected environment.
NSSet
and its mutable subclass NSMutableSet
provide unordered storage of objects.
Cocoa also provides NSCountedSet
, which is a subclass of NSMutableSet
and which keeps a count of how many times each object has been added to the set.
NSHashTable
is modeled after NSMutableSet
but provides different options, mostly to support weak relationships in a garbage-collected environment.
Last updated: 2010-08-03