Singleton LocationManager запускает обновления? - PullRequest
0 голосов
/ 05 марта 2011

Почему этот CLLocationManager внутри моего синглтона не работает? Я взял этот код http://jinru.wordpress.com/2010/08/15/singletons-in-objective-c-an-example-of-cllocationmanager/

Ничего не меняя его код (поэтому, если я добавлю что-то в его код, дайте мне знать), это мой первый синглтон за все время.

- (CLLocationManager *)locationManager {

    if (locationManager != nil) {
        return [LocationController sharedInstance].locationManager;
    }

    self.locationManager = [LocationController sharedInstance];
    [LocationController sharedInstance].locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;


    return [LocationController sharedInstance].locationManager;
}
  • (аннулируются) viewDidLoad { [super viewDidLoad];

    // Start the location manager.
    [LocationController sharedInstance].delegate = self;
    //[[self locationManager] startUpdatingLocation];
    
    [[LocationController sharedInstance].locationManager startUpdatingLocation];
    

Ответы [ 4 ]

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

Я не совсем понимаю, чего вы хотите достичь с помощью вашего метода (CLLocationManager *) locationManager. Но в функцию init в LocationController.h вы должны добавить что-то вроде этого:

- (id)init
{
   self = [super init];
   if (self != nil) {
       self.locationManager = [[[CLLocationManager alloc] init] autorelease];
       self.locationManager.delegate = self;
       self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    }
   return self;
}

И когда вы хотите вызвать одноэлементный объект в другом контроллере для обновления местоположения, вы можете просто вызвать:

        [[LocationController sharedInstance].locationManager startUpdatingLocation];

Не забудьте также реализовать метод делегата - (void) locationUpdate: (CLLocation *) location в вашем контроллере.

Надеюсь, на этот раз это поможет, если мой пост не помог.

0 голосов
/ 12 апреля 2016

Вот что я сделал, и вы можете найти полный пример на github.

https://github.com/irfanlone/CLLocationManager-Singleton-Swift

0 голосов
/ 05 марта 2011

Предполагая, что - (CLLocationManager *)locationManager является методом LocationController строки

self.locationManager = [LocationController sharedInstance];

не имеет смысла, поскольку вы присваиваете одноэлементный экземпляр LocationController для self.locationManager типа CLLocationManager.

0 голосов
/ 05 марта 2011

Возможно, проблема в делегате.Это указывает на файл, а не на синглтон.

...