启用ARC后,自定义MKAnnotationView停止工作

时间:2012-04-27 16:53:07

标签: iphone objective-c xcode mkannotation

我已经实现了自定义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;

目前我不知道会发生什么。

1 个答案:

答案 0 :(得分:0)

原因是,对于ARC,变量一旦从范围中消失就会被释放,因此它永远不会离开函数。我有同样的问题,但我还没有找到解决方案。