我想在我的功能中运行我所做的一切:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
}
在后台。我有我的页面有很多元素,我希望地图的负载不会阻止应用程序的使用。当应用程序加载时,地图被初始化,用户必须等待几秒钟才能加载地图。我知道我们可以在后台用
做一些事情dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
[self doWorkInBackground];
});
但我没有使用locationManager。 所以我想要没有地图的应用程序加载,并且当地图完成加载它出现在应用程序上。 你可以帮帮我吗 ? 感谢。
答案 0 :(得分:0)
是的,您应该将代码放在您发布的异步块之间。从块中加载地图后,您在视图控制器上调用另一个方法来显示地图。你必须在主线程中执行,否则你的家伙会陷入困境。
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// load your map here
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf mapWasLoaded];
});
});
__ weak是为了避免内存泄漏。
答案 1 :(得分:0)
将此信息放入info.plist文件
<key> UIBackgroundModes</key>
<string>location</string>
对我来说,它的工作)
另外,非常好的教程!我从它开始!