Лучший способ не дать ему измениться - скопировать массив, а не задавать его. У меня была эта проблема раньше, и вот что помогло мне
РЕДАКТИРОВАТЬ: просто, чтобы я не дал вам плохую информацию, я собираюсь изменить это на более обобщенную версию:
NSMutableArray *secondArray = [NSMutableArray alloc] initWithCapacity:[[firstArray objectAtIndex:1] count];
[secondArray addObjectsFromArray:[firstArray objectAtIndex:1]];
Это должно лучше соответствовать вашей ситуации. Я проверял его дважды, чтобы убедиться, создавая массивы и клонируя их, затем модифицируя клоны, чтобы увидеть, что они являются единственными изменяемыми объектами