2017-04-03 408 views
0

应用程序遇到以下故障并无法理解此故障背后的原因。这个崩溃报告是我从App Store得到的。这是崩溃报告截图Xcode 8.2应用程序崩溃 - [viewcontroller .cxx_destruct]符号化崩溃报告

-[viewcontroller .cxx_destruct] symbolicated crash report

它主要影响在iOS 10.2。在这堂课中,我使用Google Maps,Pageviewcontroller和Timer。那么,任何人都可以告诉我如何弄清楚它?

+0

取悦你非凡的破发点 – ajjjjjjjj

+0

这个崩溃报告是我从App Store得到的。在测试/调试时,我没有遇到这个问题/崩溃。 –

+0

@AntonyRaphel要求他们提供步骤进行复制,因为您无法做到,他们会提供帮助,或者他们必须已经采取措施重新检查他们的答复。 – iphonic

回答

0

由于通过使用addObserverforKeyPath:@"myLocation" options:NSKeyValueObservingOptionNew从Google地图中提取用户当前位置,因此发生了此故障。

虽然dealloc谷歌地图,那么你需要删除这个观察者。否则,应用程序将崩溃并出现以下错误

NSInternalInconsistencyException:类GMSMapView的实例0x1759f350被释放,而键值观察者仍在其中注册。现有的观测信息:(背景:为0x0,物业:0x177a4490>)

你需要添加谷歌地图之前的addObserver到的MapView像以下:

// Listen to the myLocation property of GMSMapView. 
[mapView_ addObserver:self 
     forKeyPath:@"myLocation" 
      options:NSKeyValueObservingOptionNew 
      context:NULL]; 

self.view = mapView_; 

// Ask for My Location data after the map has already been added to the UI. 
dispatch_async(dispatch_get_main_queue(), ^{ 
    mapView_.myLocationEnabled = YES; 
}); 

#pragma mark - KVO updates 

- (void)observeValueForKeyPath:(NSString *)keyPath 
        ofObject:(id)object 
        change:(NSDictionary *)change 
        context:(void *)context { 
if (!firstLocationUpdate_) { 
// If the first location update has not yet been received, then jump to that 
// location. 
    firstLocationUpdate_ = YES; 
    CLLocation *location = [change objectForKey:NSKeyValueChangeNewKey]; 
mapView_.camera = [GMSCameraPosition cameraWithTarget:location.coordinate 
               zoom:14]; 
} 
} 

然后还添加以下代码去除观察者

- (void)dealloc { 
[mapView_ removeObserver:self 
      forKeyPath:@"myLocation" 
       context:NULL]; 
} 

了解更多详情:Google Maps iOS SDK, Getting Current Location of user