アプリケーションでピッチ値とロール値を監視しています。1 秒以内に 5 度変化するかどうかを監視し、プロセスを実行したいと考えています。現在、私のコードは次のようになっています。
CMAttitude *attitude;
CMDeviceMotion *motion = scoringManage.deviceMotion;
attitude = motion.attitude;
basePitch = degrees(attitude.pitch);
baseRoll = degrees(attitude.roll);
if((pitchfloat >= basePitch+5) || (pitchfloat <= basePitch-5)) {
}
if((rollfloat >= baseRoll+5) || (rollfloat <= baseRoll-5)) {
}
それは次のように呼び出されます。
yprTime = [NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(yprscore) userInfo:nil repeats:YES];
このプロセスはタイマーと共に毎秒実行されますが、値が変更されると、そのループが何度も実行されます。
問題は、その 1 秒間に if ステートメントが 20 回も実行されることです。