2013-09-26 66 views
1

我正在將我的應用程序移動到IOS 7
我有一張地圖,在那張地圖上畫出MKPolyLine
一切工作,直到IOS 7現在應用程序崩潰。
我已經改變viewForOverLay新方法:IOS 7 - 添加重疊崩潰應用程序

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolyline class]]) { 
     MKPolyline *route = overlay; 
     MKPolylineRenderer *routeRenderer = [[MKPolylineRenderer alloc] initWithPolyline:route]; 
     routeRenderer.strokeColor = [UIColor redColor]; 
     routeRenderer.lineWidth = 7; 
     return routeRenderer; 
    } 
    else return nil; 
} 

在viewDidLoad中我打電話:

[self performSelectorInBackground:@selector(drawPathInBackground) withObject:nil]; 

而這正是實現:

-(void)drawPathInBackground{ 
for(int idx = 0; idx < [routes count]; idx++) 
    { 
     Path *m_p = [routes objectAtIndex:idx]; 
     CLLocationCoordinate2D workingCoordinate; 
     workingCoordinate.latitude=m_p.Latitude; 
     workingCoordinate.longitude=m_p.Longitude; 
     MKMapPoint point = MKMapPointForCoordinate(workingCoordinate); 
     pointArr[idx] = point; 
    } 
    self.routeLine = [MKPolyline polylineWithPoints:pointArr count:[routes count]]; 
    //[self.mapView addOverlay:self.routeLine]; 
    //free(pointArr); 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.mapView addOverlay:self.routeLine]; 
    free(pointArr); 
}); 
} 

在此行中:[self.mapView addOverlay:self.routeLine];我得到: EXC_BAD_ACCESS(code = 2,address = 0x0)

回答

7

您不應該在後臺線程上執行任何UI操作。僅在主線程上使用UI。

+0

好的,你能幫我解決我的代碼嗎? – 1110

+0

使用類似_dispatch_async(dispatch_get_main_queue(),^ {//您的UI操作}); _在主線程中調度您的UI操作。 – Tobias

+0

我已經改變 - (void)drawPathInBackground {...在我的問題(函數結束)是否正確的方式來做到這一點? – 1110