Экземпляр 0x1d58be70 класса MKPlacemark был освобожден

Когда я попытался добавить аннотацию в mapview, используя MKPlacemark, используя этот код:

for(int i = 0; i < [array count]; i++){
        UsersModel *model = [array objectAtIndex:i];

        CLLocationCoordinate2D newCoordinate;
        newCoordinate.latitude = model.coordinate.latitude;
        newCoordinate.longitude = model.coordinate.longitude;

        NSLog(@"%f",model.coordinate.latitude);
        NSLog(@"%f",model.coordinate.longitude);

        //mPlaceMark = [[MKPlacemark alloc] initWithCoordinate:newCoordinate addressDictionary:nil];

        MKPlacemark *placeMark = [[MKPlacemark alloc] initWithCoordinate:newCoordinate addressDictionary:nil];

        //[self.mapView addAnnotation:mPlaceMark];
        [self.mapView addAnnotation:placeMark];
        //[placeMark retain];
        NSLog(@"%@", self.mPlaceMark);
    }

Тогда это дает ошибку на моей консоли:

An instance 0x1d58be70 of class MKPlacemark was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x1d53de10> (
<NSKeyValueObservance 0x1d58af30: Observer: 0x1d576690, Key path: coordinate, Options: <New: NO, Old: NO, Prior: YES> Context: 0x0, Property: 0x1d58af90>
)

1 ответ

Похоже, вы забыли удалить какого-нибудь абсервера. Попробуйте использовать этот код в своем классе dealloc метод.

 for (id <MKAnnotation> annotation in self.mapView.annotations)
 {
      [[self.mapView viewForAnnotation:annotation] removeObserver:self]; // NOTE: remove ALL observer!
 }

Вы также должны помнить nil делегат вашей карты:

 self.mapView.delegate = nil;
Другие вопросы по тегам