Я пишу приложение, которое использует обратное геокодирование и команду CLGeocoder. Я использую Xcode 11.3 и Swift 5.
Код, который я использую, является стандартным и работает ie. Я могу выполнить обратное геокодирование нормально. Проблема заключается в том, что мое приложение вызывает геокодирование с обратным интервалом каждые 5 минут, чтобы сообщить о текущем адресе - это работает абсолютно нормально ... однако примерно через 4 дня мое приложение больше не работает на моем тесте iPhone. Когда я говорю, что больше не работает, я имею в виду, что я нажимаю на значок, чтобы открыть приложение, и оно возвращается к IOS. Когда я запускаю приложение на симуляторе, я вижу, что примерно каждые 5 минут потребление памяти увеличивается на 0,01 МБ, что позволяет предположить, что, возможно, через 4 дня память контейнеров заполнится и приложение перестанет работать должным образом.
Таким образом Итак, мой вопрос: кто-нибудь еще заметил, что при использовании обратного геокодирования в течение определенного периода времени их приложения не работают должным образом.
Я знаю, что это обратное геокодирование, как будто я не вызываю функцию, тогда потребление памяти остается постоянным c.
Я знаю, что существуют ограничения на частоту, которую вы можете вызвать обратным геолокации - может быть, Apple знает, что у нее утечка, и именно поэтому есть предел (чтобы отвлечь людей от того, что я делаю) ???
Я приложил весь стандартный стандартный код. Я немного изменил его, так как вынул элемент частоты и теперь сделал его таким образом, чтобы вы нажимали кнопку на экране, чтобы вызвать обратное позиционирование .... Приблизительно после 10 щелчков вы увидите увеличение памяти, если продолжите делать это вы продолжите видеть увеличение памяти ... (лучше всего пробовать каждые 15 - 20 секунд) ...
Мой код:
import Foundation
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager:CLLocationManager = CLLocationManager()
var currentLatitude: Double = 37.33030778
var currentLongitude: Double = -122.02896839
@IBOutlet var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
locationManager.delegate = self
print("Running")
}
@IBAction func myButtonPressed(_ sender: Any) {
// Print inside IBACTION
print("Inside IBACTION")
// incease latitude and longitue
currentLatitude = currentLatitude + 0.10
currentLongitude = currentLongitude + 0.10
myReverseGeo()
}
func myReverseGeo() {
let location = CLLocation(latitude: currentLatitude, longitude: currentLongitude)
let geocoder: CLGeocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in
if error != nil {
let errorString = String(describing: error?.localizedDescription)
print("Reverse Geocoding failed")
print(errorString)
return
}
let placemark = placemarks! as [CLPlacemark]
if placemark.count > 0 {
let placemark = placemarks![0]
let eventCity = placemark.locality
let eventState = placemark.subAdministrativeArea
let eventCountry = placemark.country
print(eventCity!)
print(eventState!)
print(eventCountry!)
}
})
}
}
Любые люди идеи о том, как остановить утечку памяти (кроме как не использовать обратный геокодирования) ???