我向您保证,我确实在 SO 中为我的问题寻找答案,但没有一个有帮助。这里我得到了一个简单的代码,它应该在 UIPopoverController
中呈现一个 UIImagePickerController
:
-(void)takePicture:(id)sender{
UIImagePickerController *picker=[[UIImagePickerController alloc] init];
picker.delegate=self;
picker.sourceType=UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing=YES;
UIPopoverController *poc=[[UIPopoverController alloc]
initWithContentViewController:picker];
[poc presentPopoverFromBarButtonItem:bbItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:NO];
}
现在,即使是我第一次得到 [UIPopoveController dealloc]
reached while... 错误和程序崩溃。我没有按照 ARC 进行任何保留、释放或自动释放。从 ARC 中受益时,UIPopoverControllers
是否有任何特殊考虑?
最佳答案
UIPopoverControllers 应该始终保存在一个实例变量中。为它创建一个强大的属性是一个很好的做法。
更新:
从 iOS 8 开始,您应该使用 UIPopoverPresentationController
。然后您不需要保留对弹出窗口的引用,因为它由表示 Controller 管理。
代码示例(适用于 iPhone 和 iPad):
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing = YES;
picker.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController* popoverPC = picker.popoverPresentationController;
popoverPC.barButtonItem = bbItem;
popoverPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
[self presentViewController:picker animated:YES completion:nil];
关于ios - UIPopovercontroller dealloc 在 popover 仍然可见时达到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895071/