MKMapView与EXC_BAD_ACCESS崩溃

Lee*_*ong 6 iphone annotations exc-bad-access mkmapview

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

[mapView addAnnotations:grabinstance.itemArray];
Run Code Online (Sandbox Code Playgroud)

随机崩溃.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
Run Code Online (Sandbox Code Playgroud)

Luc*_*ien 9

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

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


Lee*_*ong 4

向 Apple 报告的错误并已得到承认