简体   繁体   中英

An instance 0x1d58be70 of class MKPlacemark was deallocated

When I tried to add annotation on mapview using MKPlacemark using this code:

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);
    }

Then it gives an error on my console:

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

Seemingly, you forgot to remove some abserver. Try using this code in your class dealloc method.

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

You should also remember to nil your map delegate:

 self.mapView.delegate = nil;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM