2010-10-24 203 views
6
-(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仍然可见时

+0

你似乎在混合*查看*和*控制器*。 SearchViewController是一个控制器,但你称它为一个视图。 – Ross 2010-10-24 16:13:42

回答

3

问题是你设置

settingpopoverController = 

当你的意思做

self.settingpopoverController = 

为其自动释放将是正确的。第二个使用属性访问器,第一个只使用iVar。

+0

访问器?真? – 2011-04-30 00:23:28

+0

@Sanjit Saluja,在Obj-c 2.0及更高版本中,第二种语法(假设它是“retain”属性)将在OP调用autorelease的“UIPopoverController”上调用“retain”。否则,当前方法结束时,UIPopoverController被自动释放,达到保留计数0,并被解除分配。如果您认为我错过了某些东西,请告诉我。 – 2011-04-30 06:41:48