1

我使用下面的代碼在iPad應用程序上使用ARC,彈出窗口在屏幕上閃爍,但不保留。 我做錯了什麼? 請幫助ARC上的UIPopover

- (IBAction)photoLibraryAction:(id)sender 

{ 

    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    [imagePicker setDelegate:self]; 

    UIPopoverController *pop1 = [[UIPopoverController alloc]  initWithContentViewController:imagePicker]; 
    [pop1 setDelegate:self]; 
    [pop1 presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    [pop1 setPopoverContentSize:CGSizeMake(320, 400)]; 
} 


    if ([pop1 isPopoverVisible]) 
    { 
     // Popover is not visible 
     [pop1 dismissPopoverAnimated:YES]; 

    } 

} 
+0

'if'是什麼? – Ali

回答

3

在ARC,pop1將被釋放後立即-photoLibraryAction:回報,因爲ARC並不知道-presentPopoverFromBarButtonItem:permittedArrowDirections:使得可用超出其範圍的對象。
您必須爲您的popover控制器添加一個實例變量,以便ARC不會釋放它。您的if語句也是無效的,因爲方法返回時,pop1不再可供您使用。你也必須在那裏使用一個實例變量。

+0

謝謝你的回答,總是有道理。我會盡快嘗試,與此同時,我正在避免Popover x ARC並正常工作。 – user1108784