我正在使用我的UIPopoverController进行alloc / init,然后在委托方法中释放它。每当我执行“构建和分析”时,我会收到“潜在泄漏”的内存警告 - 我做错了什么或有办法摆脱这些警告吗?
非常感谢!
- (void) somewhere {
MyViewController *vc = [[MyViewController alloc] init];
UIPopoverController *popover=[[UIPopoverController alloc] initWithContentViewController:vc];
[vc release];
// show the popover
[popover presentPopoverFromRect:[cell frame] inView:self.tableView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popover.delegate = self;
}
- (void) popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[popoverController release];
popoverController = nil;
}
编辑:显示完成某处功能
答案 0 :(得分:0)
首先,在popoverControllerDidDismissPopover:
方法中,您应该不发布popoverController
实例,因为它将由框架发布。
其次,somewhere
方法的含义是什么?你应该在这里发布完整的实现...我想你正在显示popover视图,所以你应该这样做:
- (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;
}
这样,您将始终在需要的位置保存弹出框的实例,并在完成后将其释放。在您之前的实现中,该实例未绑定任何内容。