Преобразование постоянно меняющегося скалярного значения в изменяющийся интервал или частоту

Хотя я и пишу код в Objective C, это скорее вопрос программирования.
Каков наилучший способ преобразования постоянно меняющегося скалярного значения в изменяющийся интервал или частоту?

Прямо сейчас каждый раз, когда меняется скалярное значение, я уничтожаю NSInterval
т.е.

   [self.myTimer invalidate];
    self.myTimer = nil;

и создание нового, но это кажется ОЧЕНЬ дорогим способом достижения моей цели, поскольку меняющееся скалярное значение в моем случае представляет собой горизонтальную скорость пролистывания.

Для грубой аналогии представьте, как скорость свипа отражается в визуальном метрономе: чем быстрее вы проводите, тем выше (короче интервал) частота метронома.

1 ответ

Решение

Во-первых, поймите, что это проблема "измерения". Чтобы решить эту проблему, выделите минимальные атрибуты, необходимые для решения проблемы, и выведите остальные.

Перемещенное расстояние и время, необходимое для перемещения, являются производными атрибутами каждого измерения, в этом случае измерение называется "смахивание". В гоночной аналогии измерение называется кругом. "Скорость" теперь может быть рассчитана. Это будет "скорость", то есть просто расстояние / время.

distance могут быть рассчитаны с учетом начальной и конечной точек удара. Чтобы получить значение времени, создайте startTime экземпляр NSDate в touchesBegan:withEvents: И в touchesEnded:withEvents: подсчитывать elapsedTimeInterval с помощью [startTime timeIntervalSinceNow];

В зависимости от ваших потребностей, вам может понадобиться Measurement класс со свойствами для startPosition, endPosition, startTime и endTime, чтобы вы могли отслеживать "самую быструю" скорость и т. д.

Взгляните на паттерны анализа Мартина Фаулера. Я нахожу это очень полезным при попытке сопоставить проблемы домена с программными решениями.

Другие вопросы по тегам