I have used NSSets many times in my apps, but I have never created one myself.
When is it better to use an NSSet
as opposed to an NSArray
and why?
Yes, NSArray is faster than NSSet for simply holding and iterating. As little as 50% faster for constructing and as much as 500% faster for iterating.
NSMutableArray and NSArray both are build on CFArray , performance/complexity should be same. The access time for a value in the array is guaranteed to be at worst O(lg N) for any implementation, current and future, but will often be O(1) (constant time).
The NSSet , NSMutableSet , and NSCountedSet classes declare the programmatic interface to an unordered collection of objects. NSSet declares the programmatic interface for static sets of distinct objects. You establish a static set's entries when it's created, and can't modify the entries after that.
arrays can't contain nil.
The image from Apple's Documentation describes it very well:
Array
is an ordered (order is maintained when you add) sequence of elements
[array addObject:@1]; [array addObject:@2]; [array addObject:@3]; [array addObject:@4]; [array addObject:@6]; [array addObject:@4]; [array addObject:@1]; [array addObject:@2]; [1, 2, 3, 4, 6, 4, 1, 2]
Set
is a distinct (no duplicates), unordered list of elements
[set addObject:@1]; [set addObject:@2]; [set addObject:@3]; [set addObject:@4]; [set addObject:@6]; [set addObject:@4]; [set addObject:@1]; [set addObject:@2]; [1, 2, 6, 4, 3]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With