Ваш массив не может быть такого размера, как вы думаете.
Посмотрите на сообщение об ошибке: index beyond bounds [0 .. 186992]
.Поэтому размер вашего массива на самом деле равен 186993.
Я бы также порекомендовал вам записать значение StartTime*freq-1
во время выполнения и сравнить его с длиной вашего массива.
Кроме того, кое-чтоЭто может вызвать проблемы в том, что это изменяемый массив, и вы удаляете из него вещи, поэтому длина будет меняться во время выполнения.Вот почему я рекомендую регистрировать и длину и диапазон в точке, где код нарушается.
Итак, что-то вроде этого:
NSLog(@"Length: %i",[rawData length]);
NSLog(@"Range: %i",StartTime*freq-1);
[rawData removeObjectsInRange:NSMakeRange(0, StartTime*freq-1)];
Обновление: как добавлять объекты в другой массив вместо удаления из текущего.
Этот метод необходимо использовать, чтобы получить массив, содержащий объекты в определенном диапазоне:
- (NSArray *)subarrayWithRange:(NSRange)range
Затем вы можете добавить эти объекты в другой массив, например:
// before you did this:
[rawData removeObjectsInRange:NSMakeRange(0, StartTime*freq-1)];
// to create a filtered array do:
NSArray *filtered = [rawData subarrayWithRange:NSMakeRange(0, StartTime*freq-1)];