0

我使用 Popover 在其中显示图像。当用户触摸一个按钮时,弹出框会出现,里面有一个幻灯片。

我像这样初始化 Popover:`

- (IBAction)showPopover:(UIButton *)sender {
    myPopover *content = [[myPopover alloc] init];
    detailViewPopover = [[UIPopoverController alloc] initWithContentViewController:content];
    detailViewPopover.popoverContentSize = CGSizeMake(600., 400.);
    detailViewPopover.delegate = self;

    [detailViewPopover presentPopoverFromRect:sender.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    [content release];
}

` detailViewPopover 是一个 UIPopoverController,我将它声明为我的 .h。

我像这样解雇 Popover:`

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
    // If a popover is dismissed, set the last button tapped to nil.
    [popoverController release];

}`

当我运行我的应用程序时,它一直有效,直到我收到“-[UIPopoverController release]: message sent to deallocated instance 0x1b29b0”并且我的应用程序崩溃......我知道我释放了太多时间我的 UIPopoverController,但我不知道在哪里。我的实施好吗?

谢谢你的帮助

如果您需要更多信息,请告诉我,我将编辑帖子

4

1 回答 1

1

你不应该在这里释放你的 popoverController。

您需要在当前视图控制器的 dealloc 方法中调用 detailViewPopover 上的 release

- (void) dealloc
{
    [detailViewPopover release];
    [super dealloc];
}
于 2011-04-06T14:54:00.507 回答