Здесь есть несколько вещей, которые имеют дело с памятью.
1. componentsSeparatedByString:
создает автоматически выпущенный массив. Поскольку вы зацикливаетесь на каждом объекте в этой строке, вы создаете похожий массив несколько раз. Поскольку автоматически выпущенные объекты не освобождаются до конца цикла выполнения, это может засорить память. Лучше сделать это один раз, выведя вызов метода из внутреннего цикла.
2. Значение i
является наиболее запутанным. Вы передаете i
в качестве индекса для gridDataC
. Вероятно, это должно быть i - 6
, если вы начинаете с i = 6
.
double gridDataC[[nrows intValue] + 1][[ncol intValue] + 1];
for( i = 6; i < [fileLines count] - 1; i++ ){
NSArray * components = [[fileLines objectAtIndex:i] componentsSeparatedByString:@" "];
for( j = 0; j < [ncol intValue] - 1; j++ ){
gridDataC[i - 6][j] = [[components objectAtIndex:j] doubleValue];
}
}