Прежде всего, в методе popoverControllerDidDismissPopover:
вы должны , а не выпускать экземпляр popoverController
, так как он будет освобожден фреймворком.
Во-вторых, что означает этот somewhere
метод? Вы должны опубликовать полную реализацию здесь ... Я полагаю, вы показываете всплывающее окно, поэтому вы должны сделать что-то вроде этого:
- (void) somewhere {
// I suppose you have a local variable to hold the controller
_myPopover = [[UIPopoverController alloc] initWithContentViewController:vc];
_myPopover .delegate = self;
// ... do other things to configure the popover, if necessary
// I suppose you show it, with something like this
[_myPopover presentPopoverFromRect:yourRect inView:yourView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Затем, когда вам больше не нужен контроллер поповера, вы можете отпустить его. Вы можете попробовать с вашим кодом, таким образом:
- (void) popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[_myPopover release];
_myPopover = nil;
}
Таким образом, вы всегда будете держать экземпляр поповера там, где он вам нужен, и отпускать его, когда закончите с ним. В вашей предыдущей реализации этот экземпляр не был привязан ни к чему.