私は客観的なことを自分で学びました。したがって、iOSアプリを書いているうちに、ちょっとしたことで混乱することもあります。この質問は非常に不自由かもしれませんが、解決策が見つからないか、解決策を理解できませんでした。ここに私の状況です:iOSで値を継続的に更新するメインビューコントローラーのユーザー定義メソッドを作成するにはどうすればいいですか?
私のアプリには、シングルビューコントローラ(デフォルトのもの)が含まれています。私は、加速度計、ジャイロスコープ、磁力計から連続的な値を取得し、その値を歩行者推測航法(PDR)を使ってユーザーの位置を推定するために使用したいと考えています。この目的のために、私はCoreMotionを使用し、ヘッダーファイルにCLMotionManager(motionManager
)プロパティを作成しました。このマネージャを使用して、私は例えば、センサが利用可能であるかどうかをチェックし、その値を取得することができます:
if([_motionManager isAccelerometerAvailable])
{
_motionManager.accelerometerUpdateInterval = 0.1;
[_motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc]init] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
x=accelerometerData.acceleration.x;
y = accelerometerData.acceleration.y;
z = accelerometerData.acceleration.z;
}];}
同様に、私はジャイロスコープと磁力計から値を取得することができます。 )
1:PDR操作のように私の次の方法で行わ
-(IBAction)startSensor:(id)sender
{
//Getting accelerometer, gyroscope, and magnetometer values.
}
:
今-(void)thePDROperationWith:(NSArray*)accelerometerValues gyroscopeValues:(NSArray*)gyros magnetometerValues:(NSArray*)magneto
{
//The PDR operations with accelerometer, gyroscope and magnetometer values
}
、私の質問があり、私はとボタンを押した後IBAction
メソッド内でこれらの値を取得しますthePDROperationWith::
メソッドから連続PDR操作値を取得する方法は?私はstartSensor
メソッドの中でこのメソッドを呼び出しましたが、私は ボタンを押したときに一度だけ値を取得します。また、私は もヘッダファイルにこのメソッドを宣言すると思います(ユーザ定義のNSObject
サブクラスのように)?
2)
//a method in CLBeaconManager delegate -(void)beaconManager:(CLBeaconManager*)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { //code }
のようなユーザー定義のメソッドとデリゲートメソッドの違いは何ですか?
定義されたCLBeaconRegion
のビーコンを範囲指定するために、このデリゲートメソッド(私は正しい用語を使用しています)が連続して実行されます。私の目的のためにそのような方法を作ることができますか?
ありがとうございます。