我正在开发一个使用MKMapView
并显示用户位置的iPhone应用程序。当MKMapView的NSCFArray
属性设置为TRUE时,泄漏对象的大小为128字节,GeneralBlock-16,GenralBlock-8的泄漏对象出现内存泄漏。如果设置为NO,那么我不会得到这个泄漏。任何人都可以建议可能的原因是什么。这是showUserLocation
课程中的错误还是我错误地使用MKMapView
。有人可以告诉我使用MKMapView
的最佳方式是什么,并显示MKMapView
n。
谢谢&问候, Priyanka Aggarwal
答案 0 :(得分:2)
我有完全相同的问题。对我来说,它看起来像MKMapView中的一个错误。我想到了三种解决方法:
幸运的是,我可以在没有任何重大功能损失的情况下关闭它。
答案 1 :(得分:0)
我通过自动释放我的annotationView对象修复了类似的问题。此外,MKUserLocation是一个注释对象,因此检查您自己的注释对象(或检查注释对象是否为MKUserLocation),并为其他注释对象(或MKUserLocation)返回nil将告诉map kit使用默认的MKUserLocation对象。将这些检查放到位可以阻止您的泄漏。见下文:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{ static NSString *placemarkIdentifier = @"placemark_identifier";
if ([annotation isKindOfClass:[MyPlaceMark class]]) {
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:placemarkIdentifier];
if (annotationView == nil) {
annotationView = [[[MyPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:placemarkIdentifier] autorelease];
} else {
annotationView.annotation = annotation;
}
return annotationView;
}
return nil;
}
答案 2 :(得分:-1)