Swift MKDirections calculateDirectionsWithCompletionHandler崩溃

时间:2015-11-24 11:07:56

标签: ios swift2 mkoverlay

我对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)。

1 个答案:

答案 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。