Ich versuche, den neuen iOS7 MKMapSnapshotter zu verwenden, um ein statisches Kartenbild zu generieren. Immer wenn meine App eine Karte benötigt, rufe ich Folgendes an:iOS MKMapShapshotter Abschlussblock wird nicht immer aufgerufen
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;
}
In den meisten Fällen funktioniert das großartig. Manchmal scheint es jedoch, dass das Gerät mit Anfragen nach Karten überlastet wird und dann das Rendern aufhört. In meiner Protokolldatei sehe ich die erste Log-Anweisung über den zugewiesenen "Snapshot", sehe aber nie die "Snapshot-Vervollständigungsblock" -Nachricht.
Ist es möglich, dass meine Anfragen nie aus der Dispatch Queue ausgeführt werden? Hat jemand dieses Problem jemals gehabt?
Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem:/ –
haben Sie versucht mit - (void) startWithCompletionHandler: (MKMapSnapshotCompletionHandler) completionHandler? –
Ich würde damit beginnen, eine dedizierte Warteschlange für Ihre Snapshotter-Instanz zu erstellen. Wenn dies zuverlässig gelöst wird, haben Sie möglicherweise die globale Hintergrundwarteschlange an einer anderen Stelle in Ihrer App blockiert. – nzeltzer