2015-11-24 59 views
0

我对swift很陌生,试图在地图上显示折线。Swift MKDirections calculateDirectionsWithCompletionHandler崩溃

环顾四周后,发现这个代码:

let directions = MKDirections(request: request) 

    directions.calculateDirectionsWithCompletionHandler { [unowned self] response, error in 
     guard let unwrappedResponse = response else { return } 

     for route in unwrappedResponse.routes { 
      self.mapView.addOverlay(route.polyline) 
     } 

它可以作为预期,但应用程序崩溃(EXC_BAD_ACCESS)如果绘制前行用户返回。

回答

0

经过一番研究找不到解决方案,但更多地了解了Swift并自己解决了这个问题。

不知道是否是最好的或正确的方法来做到这一点,但为我工作。也许你有更好的解决方案,你想分享?

反正这里的代码:

directions.calculateDirectionsWithCompletionHandler { [weak self] response, error in 
      guard let unwrappedResponse = response else { return } 

      for route in unwrappedResponse.routes 
      { 
       if let weakRef = self 
       { 
        weakRef.mapView.addOverlay(route.polyline) 
       } 
      } 
     } 

我所做的是改变[无主的自我]至[弱自我。这种方式时,块被称为self是可选的,我可以检查它是否为零。