popover仍然可见时
-(void)showsearch:(id)sender
{
SearchViewController *searchview =[[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
settingpopoverController = [[[UIPopoverController alloc]
initWithContentViewController:searchview] autorelease];
[searchview release];
[settingpopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
当我点击按钮,应用程序崩溃,我得到[UIPopoverController dealloc] reached while popover is still visible.
消息。popover仍然可见时
问题是你设置
settingpopoverController =
当你的意思做
self.settingpopoverController =
为其自动释放将是正确的。第二个使用属性访问器,第一个只使用iVar。
访问器?真? – 2011-04-30 00:23:28
@Sanjit Saluja,在Obj-c 2.0及更高版本中,第二种语法(假设它是“retain”属性)将在OP调用autorelease的“UIPopoverController”上调用“retain”。否则,当前方法结束时,UIPopoverController被自动释放,达到保留计数0,并被解除分配。如果您认为我错过了某些东西,请告诉我。 – 2011-04-30 06:41:48
这里有关于这个主题的一些良好的讨论:
Retain/release pattern for UIPopoverController, UIActionSheet, and modal view controllers?
UIPopoverController and memory management
它的要点是你需要:
- 您自动释放酥料饼分配给保留物业
- 将物业设置为无视图的交易loc
- 以及在popoverControllerDidDismissPopover中将其设置为零。
你似乎在混合*查看*和*控制器*。 SearchViewController是一个控制器,但你称它为一个视图。 – Ross 2010-10-24 16:13:42