2012-05-31 2 views
0

내 iPad 앱에 기능을 구현하여 사용자 정의 특수 효과가 포함 된지도보기를 표시합니다. 몇 가지 이유 때문에 - (MKAnnotationView *) mapView : (MKMapView *) mapView viewForAnnotation : (id) 어노테이션 메서드는지도가로드 된 후 1 ~ 2 초가 지나면 호출됩니다.지도보기 지연 후 viewForAnnotation이 호출되었습니다.

핀이로드되기 전에 mapview에서 다른보기로 이동하면 응용 프로그램이 잘못된 액세스로 인해 충돌합니다. 따라서, 나는이 1-2 초 지연이 없어야한다고 가정합니다.

특별한 일은 일어나지 않습니다. 표시 할 핀이 몇 개 (3 개) 밖에 없으므로 성능에 문제가 없어야합니다.

해결 방법이 있다면 알려주십시오.

코드 :

MAPVIEWCONTROLLER

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [self setTitle:self.pageTitle]; 

    [self.navigationController.navigationBar setTintColor:[UIColor lloydsNavBarTintColour]]; 
    [self.mapView setDelegate:self]; 

    MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
    region.center.latitude = 53.566414; 
    region.center.longitude = -0.922852; 
    region.span.longitudeDelta = 10.0f; 
    region.span.latitudeDelta = 10.0f; 
    [self.mapView setRegion:region animated:YES]; 


    ACNEfficiencyAnnotation *annotation = [[ACNEfficiencyAnnotation alloc]init]; 

    [annotation setCoordinate:CLLocationCoordinate2DMake(55.5783462524414,-4.39453077316284)]; 

    [self.mapView addAnnotation:annotation]; 
} 

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation 
{ 
    self.annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]; 

    return self.annotationView; 
} 

주석 구현 :

@interface ACNEfficiencyAnnotation : NSObject <MKAnnotation> 
{ 

} 

@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle; 
@property (nonatomic, strong) ACNEfficiencyLocation *location; 

@end 


@implementation ACNEfficiencyAnnotation 

@synthesize coordinate; 
@synthesize title; 
@synthesize subtitle; 
@synthesize location; 

@end 

답변

0

당신은보다는 사용하는 대리자 메서드에서 주석을 준비하는 dequeueReusableAnnotationViewWithIdentifier을 사용해야의 ViewController의 재사용 할 속성.

viewController에서 메모리 관리에 문제가 있어야하며,보기 컨트롤러가 해제되고보기가 언로드되면지도보기를 해제하고 nil로 설정해야합니다.

0

대리자가 호출 될 때마다 self.annotationView 속성을 설정하고 MKAnnotationView을 새로 만듭니다. viewDidLoad에 속성을 인스턴스화하고 대리자 메서드에서 self.annotationView 만 반환하십시오.