[英]Crash while getting my location on GoogleMaps on iPhone
我寫信給你是因為我遇到了一個非常奇怪的錯誤。 我試圖在我的應用程序上添加GMS,最后,當我必須獲取設備位置時,我遇到了這個崩潰:
由於未捕獲的異常'NSInternalInconsistencyException'而終止應用程序,原因:'GMSMapView類的實例0x7ff7fd82def0已取消分配,而鍵值觀察者仍在其中注冊。 當前觀察信息:(上下文:0x0,屬性:0x7ff7fdc2f470>
代碼在這里初始化:
self.mapView.myLocationEnabled = YES;
self.mapView.mapType = kGMSTypeNormal;
self.mapView.settings.compassButton = YES;
self.mapView.settings.myLocationButton = YES;
//=> Listen to the myLocation property of GMSMapView.
[self.mapView addObserver:self
forKeyPath:@"myLocation"
options:NSKeyValueObservingOptionNew
context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if ([keyPath isEqualToString:@"myLocation"] && [object isKindOfClass:[GMSMapView class]])
{
appDelegate().curUserLocation = [change objectForKey:NSKeyValueChangeNewKey];
[self.mapView animateToCameraPosition:[GMSCameraPosition cameraWithLatitude:self.mapView.myLocation.coordinate.latitude
longitude:self.mapView.myLocation.coordinate.longitude
zoom:15]];
}
}
但仍然沒有成功。 我把斷點放在observerValueForKey方法中,一旦從這里出來,就會出現崩潰。 無法得到這個想法。
我也刪除了觀察者:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.mapView removeObserver:self forKeyPath:@"myLocation"];
//=> Set map delegate to nil (to avoid: mapView:regionDidChangeAnimated:]: message sent to deallocated instance )
self.mapView.delegate = nil;
self.mapView = nil;
}
並沒有成功。
誰能幫我這個 ? 我嘗試了所有可能的解決方案,但沒辦法。
提前致謝!
已經在評論中說過了...... GMSMapView必須很Strong
如果你沒有調用requestWhenInUseAuthorization
你的代碼將無法在iOS 8中requestWhenInUseAuthorization
我建議你只使用CLLocationManager代替KVO ...但是你的決定。
附上我的例子 - 我用2個示例修改了Google示例...
如果您有任何問題......請告訴我
PS別忘了添加API密鑰
快樂的編碼!
UPDATE
如果你startUpdatingLocation ..不要忘記用stopUpdatingLocation
停止它..讓我們說在ViewDidDisapear
如果在viewWillAppear :中注冊,請使用viewWillDisappear刪除觀察者。
如果在viewDidLoad中注冊,請使用deinit取消注冊觀察者。 始終使用計數器部件進行注冊和取消注冊,這應該沒問題
斯威夫特3
deinit {
mapView.removeObserver(self, forKeyPath: "myLocation")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.