0

私は Objective C でコーディングしていますが、これはプログラミングに関する一般的な質問です。
絶えず変化するスカラー値を変化する間隔または頻度に変換する最良の方法は何ですか?

現在、スカラー値が変更されるたびに、NSInterval を破棄しています

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

新しいものを作成しますが、私の場合、スカラー値の変化はスワイプの水平速度を表すため、これは私の目標を達成するための非常に高価な方法のようです。

大まかな例えとして、スワイプの速度が視覚的なメトロノームに反映されていると考えてください。スワイプが速いほど、メトロノームの周波数が高くなります(間隔が短くなります)。

4

1 に答える 1

1

まず、これが「測定」の問題であることを理解してください。この問題を解決するには、問題を解決するために必要な最小限の属性を分離し、残りを導出します。

移動した距離と距離を移動するのにかかった時間は、各測定値の派生属性です。この場合、測定値は「スワイプ」と呼ばれます。レースに例えると、測定値はラップと呼ばれます。「速度」が計算できるようになりました。これは単に距離/時間である「速度」になります。

スワイプのdistance開始点と終了点を指定して計算できます。時間値を取得するには、 inおよび in calculateのstartTimeインスタンスを作成します。NSDatetouchesBegan:withEvents:touchesEnded:withEvents:elapsedTimeInterval[startTime timeIntervalSinceNow];

Measurement必要に応じて、「最速」の速度などを追跡できるように、startPosition、endPosition、startTime、および endTime のプロパティを持つクラスが必要になる場合があります。

Martin FowlerによるAnalysis Patternsをご覧ください。ドメインの問題をソフトウェアのソリューションにマッピングしようとするときに、これは非常に便利だと思います。

于 2010-06-22T17:30:48.223 に答える