1.25. Allocating and Making Use of Sets
Problem
You would like to store an array of objects but you don’t want any one object to appear more than once in the array.
Solution
Use sets instead of arrays.
Discussion
Sets are very similar to arrays. The big difference is that sets allow objects to
be added only once. The second time you try to add the same object, it
will be rejected by the set. We use NSSet for immutable and NSMutableSet for mutable sets. Let’s have a
look at an example of an immutable set:
NSString*hisName=@"Robert";NSString*hisLastName=@"Kiyosaki";NSString*herName=@"Kim";NSString*herLastName=@"Kiyosaki";NSSet*setOfNames=[[NSSetalloc]initWithObjects:hisName,hisLastName,herName,herLastName,nil];NSLog(@"Set = %@",setOfNames);
We created an immutable set and passed 4 string objects to its
initializer method. So let’s see what gets printed out to the console
window with our NSLog:
Set = {(
Kim,
Robert,
Kiyosaki
)}You can see that the last name Kiyosaki
was added only once to the list. Our set rejected the second addition of
the same object to the list. It is very important
to understand that a set doesn’t just do a comparison on where in memory
an object sits, but it actually looks into its contents. hisLastName and herLastName are two separate variables, and
they will sit in two different places in the memory. Our set, however,
managed to understand that we are passing instances of NSString to it and did a comparison on the
contents of these strings ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access