我正在使用一个弹出式视图来呈现大量的旗帜,您可以从中选择。我的代码有问题,因为在我打开这个弹出窗口后不久,内存没有被释放(视图控制器"flagsViewController“是正常的和干净的,它初始化并释放它里面的每一项。
我做错了什么?如何在关闭弹出窗口后立即释放内存?
-(void)presentFlags
{
[self.popoverController dismissPopoverAnimated:YES];
FlagsViewController *controller = [[FlagsViewController alloc]
initWithNibName:@"FlagsViewController"
bundle:[NSBundle mainBundle]] ;
UINavigationController *container = [[UINavigationController alloc] initWithRootViewController:controller];
UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithItems:segmentedItems];
ctrl.frame = CGRectMake(0, 6, 500, 30);
[ctrl addTarget:self action:@selector(changeSeg:) forControlEvents:UIControlEventValueChanged];
ctrl.segmentedControlStyle = UISegmentedControlStyleBar;
//ctrl.momentary = YES;
ctrl.tintColor = [UIColor darkGrayColor];
UIImage *theImage = [UIImage imageNamed:@"highlight_country.png"];
[ctrl setImage:theImage forSegmentAtIndex:0];
[container.navigationBar addSubview:ctrl];
[ctrl release];
//
//create a popover controller
self.popoverController = [[[UIPopoverController alloc]
initWithContentViewController:container] autorelease];
[container release];
[popoverController setPopoverContentSize:CGSizeMake(500, 600)];
//present the popover view non-modal with a
//refrence to the button pressed within the current view
[popoverController presentPopoverFromRect:CGRectMake(popoverArrowPossition, 0.0, 0.0, 52.0) inView:super.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
[controller release];
}发布于 2011-08-26 23:47:32
使用UIPopoverController非常困难,但我通过执行以下操作解决了这个问题:将Popover Controller的委派设置为self (popoverController.delegate = self)并将UIPopoverControllerDelegate协议添加到您的类头
接下来,我实现了- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController委托方法,在这里我释放了popoverController并将其设置为nil。
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[self.popoverController release];
self.popoverController = nil;
}请注意:如果您通过代码(即使用dismissPopoverAnimated)关闭弹出窗口,则不会调用此委托方法,只有当此用户通过在弹出窗口外点击来取消弹出窗口时才会调用它。
https://stackoverflow.com/questions/7207067
复制相似问题