Естественно предлагать вложение, но трата времени, если вам не нужно что-то, что может делать разреженные массивы.
Лучшим решением является создание NSMutableArray и заполнение его NSNulls или NSPointerArray, который допускает нулевые значения с помощью метода setCount:
.
Тогда, если вам нужно, скажем, иметь возможность обрабатывать объекты в координатах (0..3,0..3,0..3), то есть 4 * 4 * 4 (или 64) слота.
Оттуда превращение координаты (x, y, z) в слот в массиве - это просто вопрос умножения; (1,2,3) - объект с индексом (1 + (2 * ширина) + (3 * ширина * высота)).
Этот простой математический уклон исключает кучу дополнительных выделений (и вероятность того, что ваши дополнительные выделения фрагментируют память). Хотя я и не за преждевременную оптимизацию, математика проста, а танец распределения - нет, в первую очередь это будет проще реализовать.