Нет, ни NSArray
, ни NSMutableArray
не являются разреженными массивами.Если у вас есть массив из 5000 записей со всем, кроме 4999, установленным на [NSNull null]
, он по-прежнему занимает пространство в 5000 записей.
Аналогично, NSPointerArray
будет иметь место для 5000 записей со всеми записями.NULL
кроме индекса 4999.
Я разработал объект разреженного массива, используя NSMutableDictionary
, как описано OMZ.При этом остается только пробел для одной записи.Это пробел , однако, содержит и индекс, и объект, и есть издержки на преобразование значений индекса в NSNumber
s.Таким образом, хотя они могут использоваться в любом месте, * NSArray
или NSMutableArray
могут быть потери производительности.Это классический компромисс между скоростью и пространством.
См. https://github.com/LavaSlider/DSSparseArray