2010-10-24 130 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

相關問題