我正在为我的 iOS 应用程序使用 skobbler API。一旦我给出了路线绘制的源点和目的地点,它就可以正常工作,并且导航也可以按预期工作。在导航过程中,我遇到了非常随机和奇怪的问题,我的应用程序被卡在内部线程中并且没有响应。
在导航期间,应用程序仅在某些路线上崩溃并卡在线程中
线程 4:EXC_BAD_ACCESS(代码=2,地址=0x0)
0 路由器::RouteToTrack(CRoute*, SSegmentForRoutingMatching const&, int, int, bool, bool, int&)
1 路由器::CreateImposedRouteImpl(std::tr1::shared_ptr&, bool, bool)
2 路由器::CreateImposedRouteImpl(std::tr1::shared_ptr&, bool, bool)
3 RouteManager::computeRouteFromTrack(SRouteManagerInput&, std::tr1::shared_ptr&, std::vector, std::allocator > >&)
4 路由管理器::运行()
5 路由管理器::运行()
6 _pthread_start
以下是我用于导航的位置坐标来源:41.847819,-87.666715 目的地:41.860881,-87.693194
这种情况只发生在某些点上,因为其余的位置导航是完美的!
请提出一些建议,我一直在寻找解决方案。
这是获取和绘制路线的代码。
for (SKGPSFileElement *s in routingArray) {
if(s.type == SKGPSFileElementGPXTrack)
{
index++;
if(self.trackArray != nil && self.isRouteCalculated == YES)
{
__block BOOL sameArray = NO;
for (CLLocation *l in [[SKGPSFilesService sharedInstance] locationsForElement:s]) {
sameArray = NO;
[self.trackArray enumerateObjectsUsingBlock:^(CLLocation *obj, NSUInteger index, BOOL *stop){
if(l.coordinate.latitude == obj.coordinate.latitude && l.coordinate.longitude == obj.coordinate.longitude)
{
*stop = YES;
sameArray = YES;
}
} ];
if(sameArray == NO)
break;
}
if(sameArray == NO)
{
@synchronized([SKRoutingService sharedInstance]){
SKRouteSettings* route = [[SKRouteSettings alloc]init];
route.shouldBeRendered = YES; // If NO, the route will not be rendered.
route.requestAdvices = YES;
route.numberOfRoutes = 1;
[[SKRoutingService sharedInstance]calculateRouteWithSettings:route GPSFileElement:s];
}
}
}