1. ホーム
  2. objective-c

[解決済み] 現在位置の許可ダイアログがすぐに消えてしまう

2022-04-15 04:05:22

質問

私のアプリは、ユーザーの位置情報を取得し、座標を取得し、目的地または出発地までの距離を提供します。これらの可能性のある目的地はすべてテーブルビューに表示されるので、テーブルへの入力と同時にユーザーの座標を取得しています。ただ、ユーザーの位置を尋ねるアラートビューが表示され、すぐに消えてしまうので、クリックすることができないのです。

アプリの初回ロード時に、このアラートを手動で表示する方法はありますか?アプリのロード時にユーザーの位置情報を取得して、アラートを強制的に表示させようとしましたが、うまくいきませんでした。

解決方法を教えてください。

追跡するのは難しいですが、その解決方法はとても簡単です。

試行錯誤の結果、アプリ内の位置情報サービスに初めてアクセスしようとすると位置情報アクセスダイアログがポップアップしますが CLLocationManager オブジェクトは、ユーザーがダイアログに応答する前に解放されます。

を作成していたのですが CLLocationManager インスタンスを作成しました。 viewDidLoad メソッドを使用しています。 これはメソッドのローカルインスタンスであったため、メソッドの実行完了後にARCによってインスタンスが解放されました。 インスタンスが解放されると同時に、ダイアログが消えました。 解決策は簡単でした。 このメソッドの CLLocationManager インスタンスをメソッドレベルの変数からクラスレベルのインスタンス変数に変更しました。 これで CLLocationManager インスタンスは、クラスがアンロードされたときにのみ解放されます。