gpt4 book ai didi

使用 selectannotation 时 iOS Mapkit 崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:02 24 4
gpt4 key购买 nike

我无法找出这次崩溃的原因。

我有一个 iPad 应用程序,在同一屏幕上有一个 MapView 和一个 Tableview。我试图让用户选择表格中的一行,然后突出显示 map 中的相应图钉,反之亦然。在模拟器中它工作正常。它在设备上工作了一段时间,但如果我继续这样做,它将因 SIGSEGV 而崩溃。我不明白为什么。

这似乎只有在从选定的表格 View 行转到选择 map View 中的图钉时才会发生。

这是代码

  Place *p = [self.results objectAtIndex:[indexPath row]];

NSArray *annon = [self.mapView annotations];
for ( int i = 0; i < [annon count]; i++)
{
NSObject *a = [annon objectAtIndex:i];
if ([a isKindOfClass:PlaceAnnotation.class])
{
PlaceAnnotation *pa = (PlaceAnnotation *)a;
if (p.placeid == pa.placeid)
{
[self.mapView selectAnnotation:pa animated:YES];
break;
}
}
}

这是我们在执行此代码时看到的崩溃类型。

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x9
Crashed Thread: 0

Thread 0 Crashed:
0 libobjc.A.dylib 0x317c4f78 0x317c1000 + 16248
1 CoreFoundation 0x3195576b 0x318c6000 + 587627
2 CoreFoundation 0x318cd644 0x318c6000 + 30276
3 CoreFoundation 0x318cf701 0x318c6000 + 38657
4 MapKit 0x36b061f3 0x36ab9000 + 315891
5 MapKit 0x36acf33d 0x36ab9000 + 90941
6 MapKit 0x36acf2f1 0x36ab9000 + 90865
7 MapKit 0x36ad29bd 0x36ab9000 + 104893
8 MapKit 0x36acdf03 0x36ab9000 + 85763

如有任何帮助,我们将不胜感激。

最佳答案

我认为崩溃是因为找到准确位置后立即出现的当前位置气泡。尝试使用以下方法禁用用户位置

[self.mapView setShowsUserLocation:NO];

如果您需要用户位置,请包含以下委托(delegate)方法并检查应用是否崩溃。

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id ) annotation {
if(![annotation isKindOfClass:[PlaceAnnotation class]]) {
return nil;
}

谢谢。

关于使用 selectannotation 时 iOS Mapkit 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11138403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com