Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When is it better to use an NSSet over an NSArray?

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?

like image 642
geminiCoder Avatar asked Jun 12 '12 13:06

geminiCoder


People also ask

Is it faster to iterate through an NSArray or an NSSet?

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.

Which is faster NSArray or NSMutableArray?

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).

What is NSSet?

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.

Can NSArray contain nil?

arrays can't contain nil.


1 Answers

The image from Apple's Documentation describes it very well:

Objective-C Collections

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] 
like image 137
James Webster Avatar answered Oct 21 '22 01:10

James Webster