Проблема в том, что вы не можете изменить массив, который вы перебираете, с помощью быстрого перечисления.
Фрагмент кода вообще не нужен для этого вызова replaceObjectAtIndex:withObject:
, поскольку вы заменяете объект тем же объектом! Так что, если вы удалите эту строку, все должно работать.
Как правило, вы можете избежать подобных проблем, если будете использовать обычный старый цикл for с индексированием, т.е.
for (int i = 0; i < [array count]; i++) {
id obj = [array objectAtIndex:i];
// ...
}
, поскольку это не приведет к быстрому перечислению.