ios - MKMapView必须在主线程上初始化

标签 ios cocoa-touch mkmapview

我是 iPhone 新手,使用 MKMapView 在我的应用程序中加载谷歌地图。但它抛出异常“MKMapView 必须在主线程上初始化。”。那么我应该在哪里初始化我的 MKMapView 对象。我正在 viewDidLoad() 中初始化。

提前致谢......

最佳答案

它没有在主线程上创建的原因是两个选项之一

  1. 创建它的 View 位于后台线程之一
  2. 您正在调用 performSelectorInBackground: 来创建 View

要在主线程上执行函数,请调用performSelectorOnMainThread:

题外话:如果函数需要超过 1 个参数,请将其更改为 NSDictionary 并将所有设置加载到字典中并将其传递给例如

NSDictionary *params = ...... //load your parameters into here

[myMapView performSelectorOnMainThread:@selector(initMap:)
                                withObject:params
                             waitUntilDone:YES];

另请阅读以下内容 FirstSecond更好地了解 iOS 中的多线程

关于ios - MKMapView必须在主线程上初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804725/

相关文章:

ios - Google Maps 会导致高事件字节数吗?

iphone - 第 5 代设备上更大的启动图像

iphone - 使用图层和 Grand Central Dispatch 渲染 UIButtons 的最快方法?

iphone - 如何使 UIPageViewController 动画具有用于翻页功能的偏移边缘?

Swift Parse MapView 不显示 CalloutAccessory 和 Segueing

ios - UIMapView : User location annotation is white not pulsing blue in iPad only

ios - 如何在 swift ios 中自动将光标从一个文本字段移动到另一个文本字段?

objective-c - UIViewController 中的 UIViewController

ios - 如何使用一个不是 tableview 成员的开关禁用 tableview 单元格的所有文本字段?