0

尽管我在 Objective C 中进行编码,但这更像是一个通用的编程问题。
将不断变化的标量值转换为不断变化的间隔或频率的最佳方法是什么?

现在每次标量值发生变化时,我都会破坏 NSInterval

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

并创建一个新的,但这似乎是实现我的目标的一种非常昂贵的方式,因为在我的例子中,不断变化的标量值代表了滑动的水平速度。

做一个粗略的类比,想想滑动的速度反映在视觉节拍器中,你滑动得越快,节拍器的频率就越高(间隔越短)。

4

1 回答 1

1

首先,了解这是一个“测量”问题。要解决此问题,请隔离解决问题所需的最小属性并推导出其余属性。

移动的距离和移动距离所花费的时间是每个测量的派生属性,在这种情况下,测量被命名为“滑动”。在赛车类比中,测量值称为一圈。现在可以计算“速度”。这将是“速度”,它只是距离/时间。

可以计算给定滑动的distance起点和终点。要获取时间值,请使用以下方法创建in和 in计算startTime实例NSDatetouchesBegan:withEvents:touchesEnded:withEvents:elapsedTimeInterval[startTime timeIntervalSinceNow];

根据您的需要,您可能需要一个Measurement具有 startPosition、endPosition、startTime 和 endTime 属性的类,以便您可以跟踪“最快”速度等。

看看Martin Fowler分析模式。在尝试将域问题映射到软件解决方案时,我发现它非常有用。

于 2010-06-22T17:30:48.223 回答