Objective-c MKAnnotationView.rightCalloutAccessoryView有内存泄漏

时间:2013-12-06 17:46:34

标签: objective-c memory-leaks mkmapview mkannotationview

我正在进行一些泄漏测试,我发现泄漏一直困扰着我。我分配了一个MKMapView,并在地图上有一些MKAnnotationView。泄漏的代码在MKAnnotationView的initWithAnnotation:

self.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

当我评论该行时,代码不再泄漏。

只有在选择注释时才会发生此泄漏,所以我添加了:

if ([_mapView.selectedAnnotations count] == 1) {
  GBAnnotation *test = [self.mapView.selectedAnnotations objectAtIndex:0];
  [_mapView deselectAnnotation:test animated:NO];
}

在我的MapController的dealloc方法中(我使用ARC,但是dealloc方法也删除了观察者,并将mapview的委托设置为nil)。这有效一段时间,但只有用户的位置蓝点显示时才会泄漏。我也在委托方法中做了一切正确的事情:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;

Instruments告诉我泄漏的对象是UIButton,UIImageView(看起来像按钮的imageView),然后是一堆UIKit和QuartzCore库对象。

我正在使用Xcode 5.0.2,支持iOS 6和7。

0 个答案:

没有答案