我已经实现了自定义MKAnnotationView,并且在启用ARC之前它可以正常工作。 initWithAnnotation方法实现如下:
- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self.hasBuiltInDraggingSupport = [[MKAnnotationView class] instancesRespondToSelector:NSSelectorFromString(@"isDraggable")];
if (self.hasBuiltInDraggingSupport)
{
MKPinAnnotationView *pinAnnView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
self = (AnnotationView*)pinAnnView;
if (self)
[self performSelector:NSSelectorFromString(@"setDraggable:") withObject:[NSNumber numberWithBool:YES]];
}
self.canShowCallout = YES;
return self;
}
启用ARC后,我开始在以下行中收到EXC_BAD_ACCESS:
self = (AnnotationView*)pinAnnView;
目前我不知道会发生什么。
答案 0 :(得分:0)
原因是,对于ARC,变量一旦从范围中消失就会被释放,因此它永远不会离开函数。我有同样的问题,但我还没有找到解决方案。