Проблема утечки памяти с методом MKMapViewDelegate - PullRequest
0 голосов
/ 27 июля 2011

Код, который у меня есть:

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"Pin"];

if(pinView == nil)
{
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"];
    pinView.annotation = annotation;
    pinView.animatesDrop = YES;
    [pinView setCanShowCallout:YES];

    if([[(MapPin *)annotation title] isEqualToString:@"Starting Location"])
    {
        pinView.pinColor = MKPinAnnotationColorGreen;
        pinView.rightCalloutAccessoryView = nil;
    }
    else
    {
        pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        pinView.pinColor = MKPinAnnotationColorRed;
    }

}

return pinView;

Проблема, конечно, в том, что я должен вернуть pinView, который я выделил и должен был в какой-то момент освободить.Однако, как только я возвращаю pinView, я не могу освободить его, потому что вызов метода завершается.Как мне обойти это?Спасибо!

1 Ответ

2 голосов
/ 27 июля 2011

Использование autorelease - это способ решения подобных проблем. Хотя, имейте в виду, в какой пул автоматического выпуска помещается ваш объект, чтобы обеспечить надлежащий срок службы.=)

Очень ценная документальная ссылка для тех, кто разбирается в этом: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...