GPS не перестанет обновлять - PullRequest
3 голосов
/ 31 марта 2011

Я пишу приложение для iPhone, которое использует данные GPS.Моя проблема в том, что GPS никогда не прекращает обновлять местоположения (стрелка остается в строке состояния), даже если я убиваю сам процесс.Единственный способ заставить его исчезнуть - это удалить приложение или запретить ему использовать местоположение в настройках системы.

Вот как я создаю менеджер местоположений:

    // Create the location manager if this object does not
    // already have one.
    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate = regionTracker;

    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    // Set a movement threshold for new events.
    locationManager.distanceFilter = 1;

    [locationManager startUpdatingLocation];

В моем делегате приложения, Я запускаю эти две строки как в applicationWillTerminate:, так и applicationDidEnterBackground:

   [self.viewController.locationManager stopUpdatingLocation];
   [self.viewController.locationManager setDelegate:nil];

Я обнуляю делегата, потому что я видел какой-то пример, где они это сделали, но действительно ли это нужно?

Ответы [ 5 ]

7 голосов
/ 04 марта 2012

Так же, как упоминалось в milonet, в моем случае мне нужно было вызвать stopMonitoringSignificantLocationChanges в дополнение к stopUpdatingLocation.

2 голосов
/ 31 марта 2011

Я подозреваю, что с жизненным циклом сохранения / выпуска вашего объекта CLLocationManager происходит нечто забавное.

В делегате вы воспринимаете это как свойство.В viewController вы рассматриваете это как iVar.

Я бы предпочел, чтобы вы присвоили его self.locationManager, а не locationManager.Предполагая, что это именованное свойство с семантической установкой retain, а затем вы release используете его в методе -dealloc вашего viewController (возможно, после вызова stopUpdatingLocation для него), вам следует идти дальше.

Впрочем, я сам видел такое же поведение в первый раз, когда поиграл с CoreLocation сразу после 4.0, и появился фоновый режим.Я подумал, что с моей батареей что-то не так, потому что я только что получил iPhone 4. Оказывается, я просто набивал CoreLocation независимо от того, запущено мое приложение или нет.

1 голос
/ 24 мая 2013

Нечто подобное случилось со мной.Я использовал mapView с активированным userlocation . Я освободил менеджер местоположения, как обычно, и GPS все еще был активен.Я отключил эту опцию, и gps остановился, когда он должен был.

1 голос
/ 21 февраля 2012

У меня та же проблема, менеджер местоположения остается всегда!Я пытаюсь снять все, кроме GPS остаются .. Единственное решение для отключения GPS это удалить приложение!

1 голос
/ 04 апреля 2011

Я выяснил причину этого.На более ранней стадии проекта я использовал функцию региона iOS 4, которая регистрировала глобальные регионы системы, связанные с идентификатором приложения.

Решение - создать новый проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...