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)
您应该使用CLLocationCoordinate2DIsValid()检查注释:
if (CLLocationCoordinate2DIsValid(place.coordinate)) {
[_mapView addAnnotation:place];
} else {
NSLog(@"place %@ has invalid coordinates", place.name);
}
Run Code Online (Sandbox Code Playgroud)