私は自分で目的 c を学びましたが、そのためのコースを受講したことはありません。そのため、iOS アプリの作成中に些細なことで混乱することがあります。この質問は非常に不自由かもしれませんが、解決策が見つからなかったか、解決策を理解できませんでした。これが私の状況です:
私のアプリには単一のView Controller(デフォルトのもの)が含まれています。加速度計、ジャイロスコープ、磁力計から連続的な値を取得し、その値を使用して、歩行者推測航法 (PDR) を使用してユーザーの位置を推定したいと考えています。この目的のために、CoreMotion を使用motionManager
し、ヘッダー ファイルに CLMotionManager() プロパティを作成しました。このマネージャーを使用して、センサーが使用可能かどうかを確認し、その値を取得できます。次に例を示します。
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;
}];}
同様に、ジャイロスコープと磁力計から値を取得できます。IBAction
ボタンを押した後、メソッド内でこれらの値を次のように取得します。
-(IBAction)startSensor:(id)sender
{
//Getting accelerometer, gyroscope, and magnetometer values.
}
PDR 操作は、次のメソッドで次のように行われます。
-(void)thePDROperationWith:(NSArray*)accelerometerValues gyroscopeValues:(NSArray*)gyros magnetometerValues:(NSArray*)magneto
{
//The PDR operations with accelerometer, gyroscope and magnetometer values
}
さて、私の質問は次のとおりです。
1) メソッドから連続 PDR 操作値を取得するthePDROperationWith::
方法は? メソッド内でこのメソッドを呼び出しましstartSensor
たが、ボタンを押したときに一度だけ値を取得します。さらに、このメソッドをヘッダー ファイルでも (ユーザー定義のNSObject
サブクラスのように) 宣言する必要がありますか?
2)ユーザー定義メソッドとデリゲートメソッドの違いは何ですか
//a method in CLBeaconManager delegate
-(void)beaconManager:(CLBeaconManager*)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
//code
}
?
このデリゲート メソッド (正しい用語を使用していると思います) は継続的に実行され、定義済みのビーコンの範囲を設定しますCLBeaconRegion
。どうすれば私の目的のためにそのような方法を作ることができますか?
ありがとうございました。