didUpdateLocations anstelle von didUpdateToLocation
Mit der Veröffentlichung von iOS6 Apple will uns didUpdateLocations statt didUpdateToLocation. Kann mir jemand erklären, wie man richtig mit didUpdateLocations?
InformationsquelleAutor der Frage YogevSitton | 2012-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich davon ausgehen, Sie verwenden den folgenden delegieren, um die Letzte position?
Den Delegaten oben ist veraltet in iOS 6. Nun sollte Folgendes verwendet werden:
Um die Letzte position, einfach das Letzte Objekt des Arrays:
In anderen Worten,
[locations lastObject]
(neue Delegierte) entsprichtnewLocation
(alt delegieren) .InformationsquelleAutor der Antwort Anne
Keiner der anderen Antworten hier erklären, warum es a-Standorten array und wie man richtig mit den neuen didUpdateLocations: array bereitgestellt wird.
Zweck der abwertend die
locationManager:didUpdateToLocation:fromLocation:
und senden ein NSArray von Standorten statt, ist den Stromverbrauch zu verringern, wenn diese im hintergrund laufen.Beginnend mit dem iPhone 5, das GPS-chip hat die Fähigkeit zum speichern von Standorten für einen Zeitraum von Zeit und dann liefern Sie alle auf einmal in ein array. Dies wird als latente Standort-updates. Dies ermöglicht es der Haupt-CPU in den Energiesparmodus für eine längere Zeit, während in der hintergrund. Es bedeutet, dass iOS nicht die Haupt-CPU für jede position-update, die CPU kann schlafen, während der GPS-chip speichert Standorten.
Können Sie prüfen, ob diese Fähigkeit mit dem
deferredLocationUpdatesAvailable
Methode. Falls verfügbar, können Sie ihn mitallowDeferredLocationUpdatesUntilTraveled:timeout:
Methode. Einige Bedingungen gelten, siehe diese Antwort für details.InformationsquelleAutor der Antwort progrmr
Es gibt Sie ein array von Objekten, um Zugriff auf die Letzte Position, die Sie verwenden können,
aus dieser Delegat-Methode
InformationsquelleAutor der Antwort Janak Nirmal
Dies ist, wie die Methode implementiert werden können, arbeiten ähnlich wie die veralteten eines
InformationsquelleAutor der Antwort Groot
Wenn Sie Unterstützung sowohl für iOS-als 5 und 6, sollten Sie rufen
aus der älteren
Funktion, durch den Aufbau einer Reihe von Orten.
InformationsquelleAutor der Antwort Mustafa
Es ist bemerkenswert, dass das array der CLLocation-Objekte zurückgegeben, die vom locationManager:didUpdateLocations: möglicherweise oder möglicherweise nicht enthalten eine ehemaligen Standort. In anderen Worten, kann es in seltenen Fällen nur eine Position im array. Verwenden Sie die folgenden zu prüfen, und wenn es mehr als ein Objekt, das wir abrufen können, die jüngsten vor Ort:
Da es mindestens ein Objekt im array abrufen der aktuellen Lage erfolgt durch die Anforderung das Letzte Objekt im array. Auch wenn das Letzte Objekt ist das einzige Objekt, das ist Ok:
Beachten Sie, dass dies ist ein array, oldLocation im Beispiel oben gezeigt, nicht unbedingt die, die Sie suchen. Dies hängt davon ab, wie Sie setDistanceFilter: und desiredAccuracy: Eigenschaften, wie die Eigenschaften auswirken, wie Sie Ihre Standorte array gefüllt ist. Die gewünschte oldLocation begraben sein können, tiefer in das array.
InformationsquelleAutor der Antwort bitsand