Добавление и удаление наблюдателя для KVO «myLocation» в GMSMapView

Я искал все возможные решения, но не смог найти точного. Моя проблема: я использую контроллер навигации и диспетчер представлений с GMSMapView. Когда я перехожу к другому представлению из GMSMapView, приложение вылетает с отменой того, что «экземпляр 0x7f9b79c53c20 класса GMSMapView был освобожден, а наблюдатели с ключевыми значениями все еще были зарегистрированы с ним».

Но если я попытаюсь удалить наблюдателя в viewwilldisappear или deinit, приложение снова выйдет из строя с исключением «Не удается удалить наблюдателя для ключевого пути« myLocation »из-за того, что он не зарегистрирован в качестве наблюдателя.

Может ли кто-нибудь помочь с лучшим решением. Вот мой код:

override func viewDidLoad() { open.target = self.revealViewController() open.action = "revealToggle:" self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) locationManager.delegate = self mapView.delegate = self if (locationManager.respondsToSelector(Selector("requestWhenInUseAuthorization"))) { locationManager.requestWhenInUseAuthorization() } mapView.myLocationEnabled = true placesClient = GMSPlacesClient() } override func viewWillAppear(animated: Bool) { mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil) } deinit{ removeObserver(self, forKeyPath: "myLocation", context: nil) } override func viewWillDisappear(animated: Bool) { // removeObserver(self, forKeyPath: "myLocation") } override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) { if !didFindMyLocation { let myLocation: CLLocation = change[NSKeyValueChangeNewKey] as CLLocation mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom: 15.0) mapView.settings.myLocationButton = true didFindMyLocation = true } } 

  • Добавление тестера Sandbox в itunes подключается к существующей учетной записи Apple
  • Как изменился глобальный импорт файлов в Xcode 6 / iOS 8?
  • Xcode 6.1 работает над завершением кода Mavericks
  • Предупреждение при представлении UIActivityViewController
  • Неверное представление предупреждения и нечетное поведение с пользовательским представлением IB_DESIGNABLE с использованием автоматической компоновки
  • iOS & Swift - Как я могу получить и сохранить UIImage от пользователя?
  • Минимальная цель развертывания iOS для Xcode 6
  • cloudKit: CKFetchRecordChangesOperation в общедоступной базе данных
  • One Solution collect form web for “Добавление и удаление наблюдателя для KVO «myLocation» в GMSMapView”

    Я выяснил этот вопрос. На самом деле проблема заключалась в том, что я использовал removeObserver (self, forKeyPath: «myLocation», context: nil) вместо mapView.removeObserver (self, forKeyPath: «myLocation», context: nil)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.