使用dispatch_once启动位置服务

时间:2014-11-04 09:12:58

标签: ios objective-c iphone cllocationmanager

由于应用程序启动,我想只询问用户的位置一次。 我的意思是,每次用户启动应用程序时,都会询问他的位置服务(仅一次)。

我想过dispatch_once

static dispatch_once_t oncePredicate;

dispatch_once(&oncePredicate, ^{

    [self.locationManager startUpdatingLocation];
});

这是最好的方法吗?还是有更好的方法?

提前致谢!

1 个答案:

答案 0 :(得分:1)

通常,您不必担心多次调用startUpdatingLocation。相反,你应该做的是添加逻辑,以确保只在适当时调用它 - 即在它对用户有意义之后。

通常,这意味着存储某些状态(可能是用户默认值),并在调用startUpdatingLocation之前检查该状态。特别是只有当用户到达你的应用程序的特定阶段才会设置状态,在那里向他们请求许可是合理的(并且他们已经批准了,尽管这种检查需要更频繁地进行,因为他们以后可能会决定撤销版权所有。)