myarray[row][col] = [keys objectAtIndex:0];
if (col < 13)
[keys removeObjectAtIndex:0];
Из условия, col
всегда < 13
, поэтому всегда будет выполняться -removeObjectAtIndex:
. Но это будет -release
, что [keys objectAtIndex:0]
в предыдущей строке. Поскольку myarray[row][col]
имеет ту же ссылку с ним, есть вероятность, что он будет освобожден - и это является причиной сбоя позже.
Вы должны -retain
объект, чтобы поддержать его, например,
myarray[row][col] = [[[keys objectAtIndex:0] retain] autorelease];