2012-04-27 11 views
0

カスタムMKAnnotationViewが実装されていて、ARCを有効にする前に正しく機能していました。 initWithAnnotation方法は、このように実装されました:ARCを有効にした後でカスタムMKAnnotationViewが機能しなくなった

- (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

私は、カスタムコードを作成する方法の例からこのコードを取りました。 ARCを有効にするまではうまくいきました。しかし、しばらくすると、私はそれを "self =(AnnotationView *)pinAnnView"を "self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifyer]"に置き換えて解決しました – Misha

答えて

0

なぜなら、ARCでは、変数はスコープから出てすぐに解放されるため、関数を決して残さないからです。私はまだ解決策を見いださなかった同じ問題を抱えています。

関連する問題