Я считаю эту ссылку интересным ответом на ваш вопрос.Структуры данных Apple (NSArray
, NSSet
, NSDictionary
и т. Д.) Не реализованы простым и «стандартным способом».В большинстве случаев они работают так же, как и любой другой набор, но в целом они автоматически оптимизируются для достижения наилучшей производительности.Так что, по правде говоря, это довольно сложно сказать.В то время как Apple предоставляет документацию по эффективности массивов в CFArray.h
(эквивалентно NSArray
с), она не предлагает такой документации по эффективности наборов, хотя вы можете просматривать /System/Library/Frameworks/CoreFoundation.framework/Headers/
, чтобы просмотреть другую структуру данныхреализации.
Кроме того, должно быть различие между множеством и его изменяемым аналогом, так же как существует различие между NSString
и NSMutableString
, NSArray
и NSMutableArray
, и NSDictionary
и NSMutableDictionary
(среди прочих).Для структур данных и строк (и нескольких других классов) Apple предлагает «только для чтения» версии классов, чтобы сохранить общность, наряду со стандартными «изменяемыми» аналогами для манипуляции.Это просто стандартная практика Apple.