2010-10-24 6 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]; 


} 

Quando faccio clic sul pulsante, l'app si arresta e ricevo il messaggio [UIPopoverController dealloc] reached while popover is still visible..raggiunto mentre il popover è ancora visibile

+0

sembra che tu stia mescolando * vista * e * controller *. è SearchViewController un controller, ma si chiama una vista. – Ross

risposta

3

problema è che si sta impostando

settingpopoverController = 

quando si intende fare

self.settingpopoverController = 

per i quali il autorelease sarebbe corretto. Il secondo usa gli accessor di proprietà, il primo usa semplicemente iVar.

+0

accessors? veramente? –

+0

@Sanjit Saluja, in Obj-c 2.0 e versioni successive, la seconda sintassi - presupponendo che sia una proprietà "retain" - chiamerebbe "retain" su "UIPopoverController" su cui l'OP richiama la funzione di autorelease. Altrimenti, quando termina il metodo corrente, il 'UIPopoverController' è autoreleased, raggiunge un conteggio di mantenimento di 0 ed è deallocato. Fammi sapere se pensi che mi manchi qualcosa. –