Обычно вы хотите что-то сделать с ключами, и в этом случае проще использовать этот метод NSDictionary:
- (NSSet<KeyType> *)keysOfEntriesPassingTest:(BOOL (^)(KeyType key, ObjectType obj, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);
Это экономит время, потому что теперь вам не нужно фильтровать массив, используяпредикат, вы можете просто выполнить свой тест здесь, и вы получите обратно.Простой.
Кроме того, вы можете воспользоваться многопроцессорным параллелизмом, передав опцию параллельного перечисления этой версии метода:
- (NSSet<KeyType> *)keysOfEntriesWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(KeyType key, ObjectType obj, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);