Нет конкретного ограничения. Одним из обязательных условий для словарей является то, что ключ должен соответствовать протоколу NSCopying
. Когда вы вставляете пару ключ-значение в словарь, словарь создает копию ключевого объекта, чтобы гарантировать, что он не мутирует внутри словаря. Он использует значение хеш-функции ключевого объекта, чтобы определить, где его упорядочить внутри. Если объект был видоизменен, пока он находился в словаре, он отбросил бы порядок, и словарь не работал, поэтому словарь делает копию (хотя в качестве оптимизации, когда запрашиваются неизменяемые объекты, такие как NSString
) копия, это может просто увеличить количество сохраняемых данных и вернуть себя, но это деталь реализации).
Поскольку ключи должны соответствовать протоколу NSCopying
, это означает, что вы можете использовать несколько объектов в качестве ключей к словарю, включая NSArray
, NSData
и т. Д. Не беспокойтесь о производительности при использовании больших строк в NSDictionary
коллекций, если вы не обнаружили, что это на самом деле узкое место.