Is there a reason for NSDictionary to return its keys as NSArray instead of NSSet? The documentation already states that the order of the
NSDictionary
NSArray
NSSet
use use c++, std::map provides access to its keys as a set. the set returned is even "live" , the set reflects the ongoing current set of keys. of course you are free to make a copy as well.