Singleton LocationManager开始更新?

时间:2011-03-05 14:03:14

标签: iphone objective-c singleton cllocationmanager

为什么我的单例中的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 个答案:

答案 0 :(得分:2)

我不太明白你想要在你的 - (CLLocationManager *)locationManager方法中实现什么。但是在LocationController.h的init函数中,你应该添加如下内容:

- (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 *)位置。

如果我的帖子没有,希望这次会有所帮助。

答案 1 :(得分:0)

问题可能出在委托中。这指向文件,而不是单身。

答案 2 :(得分:0)

假设- (CLLocationManager *)locationManagerLocationController行的方法

self.locationManager = [LocationController sharedInstance];
将LocationController的单例实例分配给类型为self.locationManager的{​​{1}}时,

没有任何意义。

答案 3 :(得分:0)

以下是我所做的,您可以在github上找到完整的示例。

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