Массивы - это упорядоченные коллекции, так почему бы вам просто не отслеживать, какой индекс нужно переписать.
Когда что-то происходит так, что массив с индексом 0 (который в вашем примере будет innerArray1) внешнего массива должен быть записан, кэш-индекс 0 - как свойство, если эта подпрограмма должна охватыватьотдельные методы.
Затем, когда придет время переписать, сверьтесь с кэшированным индексом.Получите массив, который будет переписан следующим образом: NSArray *arrayToRewrite = [outerArray objectAtIndex:cachedIndexToRewrite];
Или получите к нему прямой доступ: [[outerArray objectAtIndex:cachedIndexToRewrite] replaceObjectAtIndex:whatever withObject:whatever];