вы могли бы попробовать что-то вроде этого ...
NSArray *_array = // with the 100 numbers... (I used NSNumber object for each number)
NSMutableArray *_averages = [NSMutableArray array];
for (int i = 0; i < 5; i++) [_averages addObject:@([[[_array subarrayWithRange:NSMakeRange(i * 20, 20)] valueForKeyPath:@"@avg.floatValue"] floatValue])];
в _averages
будет содержать 5 значений со средними из пяти различных секций 100 номеров.
ОБНОВЛЕНО:
эта часть просто для глаз с дополнительным любопытством.
если вы пытаетесь избежать NSObjects
и двойную for
петли, вы могли бы достичь действительно быстрого алгоритма, и, конечно же, когда вы идете более низкие уровни, вы можете улучшить текущую скорость, а также, вопрос: делает это действительно нужно?
NSInteger _segments = 1000; // it means 20.000 numbers;
Float64 _numbers[(_segments * 20)]; // fill this array as you'd like.
Float64 _averages[_segments];
for (int i = 0; i < _segments; i++) {
NSInteger _offset = (_segments<<4)+4;
_averages[i] = (_numbers[_offset] + _numbers[_offset+1] + _numbers[_offset+2] + _numbers[_offset+3] + _numbers[_offset+4] + _numbers[_offset+5] + _numbers[_offset+6] + _numbers[_offset+7] + _numbers[_offset+8] + _numbers[_offset+9] + _numbers[_offset+10] + _numbers[_offset+11] + _numbers[_offset+12] + _numbers[_offset+13] + _numbers[_offset+14] + _numbers[_offset+15] + _numbers[_offset+16] + _numbers[_offset+17] + _numbers[_offset+18] + _numbers[_offset+19])/20.f;
}
это в 10 раз быстрее, чем решение с double
для петель и NSObject
классов.
(ООН), к счастью, это даже не самое уродливое решение, но нет никаких сомнений, что это быстро, как ад, я не буду рекомендовать его кроме скорости действительно дела, потому что такого рода решения может обеспечить действительно хорошая эффективность.
Я полностью пропустил пункт использования KVO здесь .... – Till
Это просто - напишите код. Любая «причудливая» схема, которую вы можете придумать с помощью KVO или чего-то еще, гарантированно будет медленнее и неяснее. Если это не вход в конкурс нечеткого кода или некоторые такие, просто напишите код! –
@ Похоже, maddy просто объяснил мне, что KVO - это не то же самое, что кодирование с ключом. Теперь я понимаю ваш комментарий. Спасибо за ваш комментарий. –