MKMapView与EXC_BAD_ACCESS崩溃

时间:2010-11-17 08:04:29

标签: iphone annotations mkmapview exc-bad-access

我有以下代码行来激活断点

[mapView addAnnotations:grabinstance.itemArray];

随机崩溃。 grabinstance.itemArray总是完全填充,并且当时永远不会更改,因为只有在阵列已满时才调用此代码。这个特定的时间被确认为数组中的323个项目。

NSZombieEnabled也找不到任何东西。

回溯位于下方,第1154行是上面的行。

#0  0x0126a372 in _insert ()
#1  0x0126a312 in _splitNode ()
#2  0x0126a3b7 in _insert ()
#3  0x011db253 in -[MKAnnotationContainerView addAnnotation:] ()
#4  0x011dfc2e in -[MKAnnotationContainerView addAnnotations:] ()
#5  0x011b0b30 in -[MKMapView addAnnotations:] ()
#6  0x00009257 in -[BigViewController plotItems] (self=0x614de90, _cmd=0x16464f) at /Users/zzzz/Documents/iPhone Projects/BigProject/Classes/BigViewController.m:1154
#7  0x005336c1 in _nsnote_callback ()
#8  0x01c18f99 in __CFXNotificationPost_old ()
#9  0x01b9833a in _CFXNotificationPostNotification ()
#10 0x00529266 in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
#11 0x00024071 in -[ItemGrabber parserDidEndDocument:] (self=0x617b540, _cmd=0x689aa3, parser=0xf6b4ab0) at /Users/zzzz/Documents/iPhone Projects/BigProject/Classes/ItemGrabber.m:267

3 个答案:

答案 0 :(得分:9)

您应该使用 CLLocationCoordinate2DIsValid()检查您的注释:

if (CLLocationCoordinate2DIsValid(place.coordinate)) {
    [_mapView addAnnotation:place];
} else {
    NSLog(@"place %@ has invalid coordinates", place.name);
}

答案 1 :(得分:4)

Bug报告给Apple并且已被承认

答案 2 :(得分:1)

我也有同样的问题,我修复了它,问题在于我的位置,数组中的对象可能不包含有效位置,它们可能是垃圾值