新しい iOS7 MKMapSnapshotter を使用して静的なマップ イメージを生成しようとしています。アプリでマップが必要になるたびに、次のように呼び出します。
MKMapSnapshotter *snapshotter = [[[MKMapSnapshotter alloc] initWithOptions:theOptions] autorelease];
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
DebugLog(@"Snapshotter allocated %@ and run on queue %@", snapshotter, aQueue);
[snapshotter startWithQueue:aQueue completionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
DebugLog(@"Snapshotter completion block %@", snapshotter);
// perform selector on main thread to set self.imageView.image = shanpshot.image;
}
ほとんどの場合、これはうまく機能しています。ただし、マップのリクエストでデバイスが過負荷になり、レンダリングが停止する場合があります。私のログ ファイルには、「Snapshotter が割り当てられました」という最初のログ ステートメントが表示されますが、「Snapshotter 完了ブロック」メッセージは表示されません。
リクエストがディスパッチ キューの外で決して実行されない可能性はありますか? 誰もこの問題を抱えたことがありますか?