「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が実行されるまで空白の画面しか表示されません。