我对swift很新,并试图在地图上显示折线。
环顾四周后找到了这段代码:
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 :(得分:1)
经过一些研究无法找到解决方案但是对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时是可选的,我可以检查它是否为nil。