2

加速度計用と GPS 用の 2 つの異なる POC があります。ただし、両方のアプリケーションを組み合わせるアーキテクチャを理解していません。アプリケーションのロード時にアクセルと GPS の両方を初期化する必要があります。メイン ビューはアクセルに関連付けられていますが、デバイスの位置も必要です。

私の現在のアーキテクチャはワークスペースのプロジェクトです

  • メインアプリ
  • ユーティリティアプリ
  • サービスアプリ
  • ドメインアプリ

メインアプリの ViewController が継承

: UIViewController

すべてが正しく配線されていることで、アクセルが期待どおりに機能します。

Utility CoreLocationUtility クラスでは、CLLocationManagerDelegate を継承しています。

問題は、AccelDelegate 型の同じビューからデリゲートを登録するにはどうすればよいかということです。

4

1 に答える 1

0

ViewControllerを加速度計とGPSの両方のデリゲートとして機能させる場合は、ヘッダーファイルに両方のデリゲートプロトコルに従うことを記述します。

@interface ViewController : UIViewController <CLLocationManagerDelegate, UIAccelerometerDelegate> {
    CLLocationManager *myLocationManager; // an instance variable
}
 // ... your definitions
@end

次に、ViewControllerのどこかに

[UIAccelerometer sharedAccelerometer].delegate = self;
myLocationManager = [[CLLocationManager alloc] init];
myLocationManager.delegate = self;

次に、ViewControllerの別の場所に、両方のプロトコルのデリゲートメソッドを配置します

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    // ... your code
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
   // ... your code

}

タイプミスがあるかもしれませんが、私はこれをコンパイルしていません。さらに、私の経験では、ロケーションマネージャーのコードはかなり大きくなる傾向があります。ViewControllerによってインスタンス化されるように、それを独自のクラスに配置する方がはるかに良い場合があります。

UIAccelerometerDelegateプロトコルの唯一のメソッドが廃止された理由を誰かが説明できますか?

于 2012-12-01T19:05:26.230 に答える