我正在一个名为“generateMap”的方法中创建一个 MKMapView。从 viewDidLoad 内部,这有效:
[self generateMap];
但这会导致地图快速加载然后消失,只留下空白的灰色网格:
[NSThread detachNewThreadSelector:@selector(generateMap) toTarget:self withObject:nil];
任何想法为什么当我通过线程调用该方法时可能会发生这种情况?
我最终这样做了:
-(void)viewDidLoad {
[NSThread detachNewThreadSelector:@selector(spinTheSpinner) toTarget:self withObject:nil];
[self performSelectorOnMainThread:@selector(generateMap) withObject:nil waitUntilDone:NO];
[super viewDidLoad];
}
这使我可以拥有一个微调器(UIActivityIndicator)并根据需要加载 MKMapView。我设置了“waitUntilDone:No]”,以便屏幕在使用 generateMap 完成之前切换 MapView。否则,在 generateMap 完成之前,我们将看不到微调器,只会看到一个空白屏幕。