Добавление и удаление наблюдателя для 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 } } 

  • Настройка данных ядра Xcode 6 iOS 8 iCloud
  • Нет видимого @interface для 'UIImageView' объявляет селектор 'setImageWithURL'
  • Почему я получаю сообщение об ошибке «Не удалось найти или создать соответствующие активы подписи» в Xcode 6?
  • Неопределенные символы для архитектуры armv7: «_OBJC_CLASS _ $ _ GGLContext», на которые ссылается: objc-class-ref в AppDelegate.o
  • Установка Xcode6 USB - сопряжение запрещено политикой на устройстве
  • iPhone iOS 8.2 с Xcode 6.1.1
  • Временная задержка последовательности SKAction (начальная задержка?)
  • как показать UIAlertController в пользовательском UITableViewCell при нажатии кнопки с помощью быстрого кода?
  • One Solution collect form web for “Добавление и удаление наблюдателя для KVO «myLocation» в GMSMapView”

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

    Interesting Posts

    Очистить изображение с краской fade

    Как создать сборщик UIPickerView с нуля?

    Выключить аудиовоспроизведение AVPlayer?

    Функция Swift2 перечисляет функцию словаря

    iOS9 Это приложение модифицирует механизм автозапуска из фонового потока, что может привести к повреждению двигателя и странным сбоям

    Как я могу улучшить производительность своей пользовательской генерации текстур OpenGL ES 2.0?

    Как получить информацию о пользователе из Facebook SDK в iOS?

    Объектив-С для стилизации

    Как масштабировать высоту просмотров и положение представлений относительно размера экрана с помощью AutoLayout

    Safari не будет загружать некоторые ресурсы через http / 2

    Масштабирование не работает после обновления Xcode 8

    Как получить то же время обновления (используется функция currentTime :)? (до его вызова)

    Ошибка приложения с использованием записи в iCloud Key-Value

    Является ли стиль UI объектов в iOS нарушением MVC?

    Все еще запутался в новой резолюции iPhone 4

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