Ios mapkit代理的异常行为

Ios mapkit代理的异常行为,ios,objective-c,mkmapview,mkmapviewdelegate,Ios,Objective C,Mkmapview,Mkmapviewdelegate,我遇到MapKit代表的异常行为 -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation { MKAnnotationView *annotationView=[mapView viewForAnnotation:annotation]; return annotationView; } 然后调用委托方法。我不知道为什么会发生这种情况。有人帮助你

我遇到MapKit代表的异常行为

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation
{
MKAnnotationView *annotationView=[mapView viewForAnnotation:annotation];
return annotationView;
}

然后调用委托方法。我不知道为什么会发生这种情况。有人帮助

你需要考虑框架的工作方式。

  • viewForAnnotation方法仅在框架即将绘制注释时调用
  • 框架仅在显示位置(包含该注释)时绘制注释

  • 因此,当您将视图设置为区域(包含注释)时,框架将调用viewForAnnotation。(顺便说一句,您的注释方法实现视图中存在逻辑错误)

    我没有答案,但您发布的方法相当错误<代码>MKAnnotationView*AnnotationView=[mapView viewForAnnotation:annotation]不正确。它是一个mapView实例方法,我们可以使用[mapView dequeueReusableAnnotationViewWithIdentifier:@“productAnnotation]”;但结果是一样的。你真正的问题是什么?为什么您试图弄清楚什么时候调用viewForAnnotation?逻辑错误是什么?我怀疑只有在我们设置区域时才会绘制注释?感谢您的回答您在viewForAnnotation方法中调用viewForAnnotation,这是一种递归,而应该使用dequeueReusableAnnotationViewWithIdentifier,我就是这么想的。
     MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coordinate, 7.5*1609.344 ,7.5*1609.344 );
    [productsMapView setRegion:viewRegion animated:YES];