由于应用程序启动,我想只询问用户的位置一次。 我的意思是,每次用户启动应用程序时,都会询问他的位置服务(仅一次)。
我想过dispatch_once
。
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
[self.locationManager startUpdatingLocation];
});
这是最好的方法吗?还是有更好的方法?
提前致谢!
答案 0 :(得分:1)
通常,您不必担心多次调用startUpdatingLocation
。相反,你应该做的是添加逻辑,以确保只在适当时调用它 - 即在它对用户有意义之后。
通常,这意味着存储某些状态(可能是用户默认值),并在调用startUpdatingLocation
之前检查该状态。特别是只有当用户到达你的应用程序的特定阶段才会设置状态,在那里向他们请求许可是合理的(并且他们已经批准了,尽管这种检查需要更频繁地进行,因为他们以后可能会决定撤销版权所有。)