Если ваше свойство loadPopover
сохранено / скопировано, следующая строка: чрезмерное сохранение объекта и утечки:
self.loadPopover = [[UIPopoverController alloc] initWithContentViewController:loadViewController];
Оба, alloc-init и средство доступа к свойствусохранить объект.Это должно быть:
self.loadPopover = [[[UIPopoverController alloc] initWithContentViewController:loadViewController] autorelease];
Вот почему объект loadPopover
освобождается только в том случае, если вы отправляете ему два сообщения об освобождении, но вы никогда не должны прибегать к этим уловкам .
РЕДАКТИРОВАТЬ:
У вас также есть другая проблема управления памятью.Вы отпускаете объект, который вам не принадлежит, в этой строке:
[popoverController.contentViewController release];
Ответственность за сохранение / освобождение contentViewController
лежит на popoverController
.Делая это, вы преувеличиваете contentViewController
.
Подводя итог, ваш код будет выглядеть так:
- (IBAction) manageCardSets:(UIBarButtonItem*)baritem {
LoadViewController *loadViewController = [[LoadViewController alloc] initWithStyle:UITableViewStylePlain];
self.loadPopover = [[[UIPopoverController alloc] initWithContentViewController:loadViewController] autorelease];
self.loadPopover.delegate = self;
[self.loadPopover presentPopoverFromBarButtonItem:baritem permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
[loadViewController release];
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
self.loadPopover = nil;
}