Поиск хеша в целом должен быть быстрее, чем обходить все ключи словаря, создавать из них массив (выделение памяти относительно дорого), а затем искать в массиве (который даже не может быть двоичным поиском, поскольку массив не отсортировано).
Однако ради науки я создал два исполняемых файла, которые просто исполняют каждый стиль по миллиону раз и синхронизировали их.
со всеми клавишами:
real 0m4.185s
user 0m3.890s
sys 0m0.252s
С objectForKey:
real 0m0.396s
user 0m0.189s
sys 0m0.029s
Очевидно, что на это могут влиять различные факторы - размер словаря, кеширование возвращаемого значения allKeys и т. Д. Я не ожидаю, что будет случай, когда поиск в массиве будет быстрее, чем поиск по словарю.