2017-04-03 95 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