Прежде всего, вы не можете делать то, что делаете.Даже когда это работает, массив исчезнет, когда метод вернется и текущий кадр стека будет удален.Вам нужно динамически распределить массив, затем вам нужно помнить, чтобы освободить его, когда ваш объект освобожден.Итак:
size = [gamePiece.availableMoves.moves count];
indexes = calloc(size, sizeof(int));
Затем в вашем -[dealloc]
методе:
if( indexes ) free(indexes);
Использование calloc (3) обеспечит обнуление всей памяти, поэтому вам не нужнодля вызова memset (3).